Enforcing isolation and ordering in STM
Citations
724 citations
340 citations
Cites background or methods from "Enforcing isolation and ordering in..."
...As as result, STM systems may produce incorrect or unpredictable results even for simple parallel programs that would work correctly with lock-based synchronization [18, 12, 24]....
[...]
...We refer readers to [24] for a thorough discussion of isolation and ordering issues in all types of STM systems....
[...]
...Eager-based STMs have two additional cases that can lead to unpredictable behavior without strong isolation: speculative lost updates and speculative dirty reads [24]....
[...]
...[24] have categorized the problematic cases for both eager and lazy TM systems that do not provide strong isolation....
[...]
...[24] developed a set of compiler techniques that minimize their performance impact by differentiating between private and shared data, identifying data never accessed within a transaction, and aggregating multiple barriers to the same address....
[...]
309 citations
Cites background or methods from "Enforcing isolation and ordering in..."
...introduced a taxonomy for these problems, identifying a number of common patterns [288]:...
[...]
...use a similar dynamic technique to Lev and Maessen’s to improve the performance of an STM system providing strong isolation [288]....
[...]
...[288], Grossman et al....
[...]
[...]
305 citations
Cites background from "Enforcing isolation and ordering in..."
..., [21, 22, 23, 24], show how some of these short-comings can be addressed....
[...]
...Privatization One problem with software transactional memory systems only supporting weak atomicity (isolation) is the privatization problem [47, 22, 48]....
[...]
252 citations
References
3,522 citations
2,406 citations
Additional excerpts
...… list Initially list == [Item{val1==0,val2==0}] Thread1 Thread2 Item item; synchronized(list) {synchronized(list) { if(!list.isEmpty()) {item = (Item) Item item = (Item) list.removeFirst(); list.getFirst(); } item.val1++; int r1 = item.val1; item.val2++; int r2 = item.val2; }} Can r1!=r2?...
[...]
1,519 citations
1,469 citations
1,369 citations