Leave a comment

Comments 12

smalgin November 22 2011, 02:35:42 UTC
Яростно, мучительно жалею, что я на .net сейчас :)

Reply

cp_poster November 22 2011, 07:31:15 UTC
Почему?

Reply


4da November 22 2011, 08:41:20 UTC
Я не понял, это часть нового стандарта или "фича" GNU?

Reply

4da November 22 2011, 08:41:47 UTC
> The precise semantics of transactions are defined in terms of the C++11/C1X memory model (see below for a link to the specification).
ясно

Reply

thesz November 22 2011, 08:42:11 UTC
Возможность gcc.

Reply


4da November 22 2011, 08:47:21 UTC
Правильно ли я понимаю, что с использованием этих STM создается глобальный lock, так что лочится будут *все* попытки доступа, даже если они направлены к разным областям памяти?

Может быть, там есть что-то вроде "раскрашивания" этих STM, чтобы осуществлять параллельный доступ к независимым регионам?

Reply

awson November 22 2011, 12:37:49 UTC
Что такое "глобальный lock" в контексте C/C++? О каких "всех" попытках идет речь?

Reply

4da November 22 2011, 14:49:26 UTC
глобальный lock = single global lock

Roughly, transactions provide synchronization guarantees that are similar to what would be guaranteed when using a single global lock as a guard for all transactions.

все попытки = all transactions

Reply

thesz November 22 2011, 20:08:33 UTC
Как видно из текста, механизм транзакционной памяти предоставляет те же гарантии, как если бы на все обращения к памяти была глобальная блокировка.

Единая блокировка - один из вариантов реализации, не самый плохой (по соотношению скорость/усилия).

Reply


vozbu November 23 2011, 12:57:35 UTC
А в чем профит? Оно работает быстрее мьютексов или стандартных атомарных операций? Оно дает более удобный синтаксис? Оно может использовать какие-то возможности железа, которые не будут использованы при использовании обычных мьютексов?

Reply

thesz November 23 2011, 20:16:23 UTC
Проще комбинировать. Вложение транзакций с блокировками может привести к взаимной блокировке. Вложение транзакций с транзакционной памятью к таковой не приводит. Может привести к livelock, но даже в этом случае хоть одна нить будет совершать полезную работу.

Reply


Leave a comment

Up