Title
Can seqlocks get along with programming language memory models?
Abstract
Seqlocks are an important synchronization mechanism and represent a significant improvement over conventional reader-writer locks in some contexts. They avoid the need to update a synchronization variable during a reader critical section, and hence improve performance by avoiding cache coherence misses on the lock object itself. Unfortunately, they rely on speculative racing loads inside the critical section. This makes them an interesting problem case for programming-language-level memory models that emphasize data-race-free programming. We analyze a variety of implementation alternatives within the C++11 memory model, and briefly address the corresponding issue in Java. In the process, we observe that there may be a use for "read-dont-modify-write" operations, i. e. read-modify-write operations that atomically write back the original value, without modifying it, solely for the memory model consequences, and that it may be useful for compilers to optimize such operations.
Year
DOI
Venue
2012
10.1145/2247684.2247688
MSPC
Keywords
Field
DocType
cache coherence,memory model consequence,important synchronization mechanism,memory model,programming language memory model,programming-language-level memory model,synchronization variable,conventional reader-writer lock,reader critical section,corresponding issue,critical section,c,atomic operations,programming language,read modify write,java
Synchronization,Programming language,Computer science,Lock (computer science),Critical section,Parallel computing,Compiler,Memory model,Java,Memory barrier,Cache coherence
Conference
Citations 
PageRank 
References 
14
0.66
11
Authors
1
Name
Order
Citations
PageRank
Hans Boehm163238.83