Правильно ли я понимаю, что с использованием этих STM создается глобальный lock, так что лочится будут *все* попытки доступа, даже если они направлены к разным областям памяти?
Может быть, там есть что-то вроде "раскрашивания" этих STM, чтобы осуществлять параллельный доступ к независимым регионам?
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.
А в чем профит? Оно работает быстрее мьютексов или стандартных атомарных операций? Оно дает более удобный синтаксис? Оно может использовать какие-то возможности железа, которые не будут использованы при использовании обычных мьютексов?
Проще комбинировать. Вложение транзакций с блокировками может привести к взаимной блокировке. Вложение транзакций с транзакционной памятью к таковой не приводит. Может привести к livelock, но даже в этом случае хоть одна нить будет совершать полезную работу.
Comments 12
Reply
Reply
Reply
ясно
Reply
Reply
Может быть, там есть что-то вроде "раскрашивания" этих STM, чтобы осуществлять параллельный доступ к независимым регионам?
Reply
Reply
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
Единая блокировка - один из вариантов реализации, не самый плохой (по соотношению скорость/усилия).
Reply
Reply
Reply
Leave a comment