ACM Transactions on Programming Languages and Systems (TOPLAS)
The existence of refinement mappings
Theoretical Computer Science
The temporal logic of reactive and concurrent systems
The temporal logic of reactive and concurrent systems
A methodology for implementing highly concurrent data objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
A method for implementing lock-free shared-data structures
SPAA '93 Proceedings of the fifth annual ACM symposium on Parallel algorithms and architectures
ACM Transactions on Programming Languages and Systems (TOPLAS)
Universal constructions for multi-object operations
Proceedings of the fourteenth annual ACM symposium on Principles of distributed computing
Practical implementations of non-blocking synchronization primitives
PODC '97 Proceedings of the sixteenth annual ACM symposium on Principles of distributed computing
High performance dynamic lock-free hash tables and list-based sets
Proceedings of the fourteenth annual ACM symposium on Parallel algorithms and architectures
Safe memory reclamation for dynamic lock-free objects using atomic reads and writes
Proceedings of the twenty-first annual symposium on Principles of distributed computing
The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized, Lock-Free Data Structures
DISC '02 Proceedings of the 16th International Conference on Distributed Computing
Nonblocking k-compare-single-swap
Proceedings of the fifteenth annual ACM symposium on Parallel algorithms and architectures
Split-ordered lists: lock-free extensible hash tables
Proceedings of the twenty-second annual symposium on Principles of distributed computing
Efficient and practical constructions of LL/SC variables
Proceedings of the twenty-second annual symposium on Principles of distributed computing
Bringing practical lock-free synchronization to 64-bit applications
Proceedings of the twenty-third annual ACM symposium on Principles of distributed computing
Wait-free concurrent memory management by create and read until deletion (CaRuD)
Distributed Computing
Lock-free dynamic hash tables with open addressing
Distributed Computing - Special issue: PODC 02
Lock-Free parallel garbage collection
ISPA'05 Proceedings of the Third international conference on Parallel and Distributed Processing and Applications
Lock-free parallel and concurrent garbage collection by mark&sweep
Science of Computer Programming
Simulation Refinement for Concurrency Verification
Electronic Notes in Theoretical Computer Science (ENTCS)
A general technique for proving lock-freedom
Science of Computer Programming
Verifying lock-freedom using well-founded orders
ICTAC'07 Proceedings of the 4th international conference on Theoretical aspects of computing
Mechanically verified proof obligations for linearizability
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient explicit-state model checking on general purpose graphics processors
SPIN'10 Proceedings of the 17th international SPIN conference on Model checking software
Exploitation of multicore systems in a java virtual machine
IBM Journal of Research and Development
Scalable hashing for shared memory supercomputers
Proceedings of 2011 International Conference for High Performance Computing, Networking, Storage and Analysis
Hi-index | 0.00 |
The compare-and-swap register (CAS) is a synchronization primitive for lock-free algorithms. Most uses of it, however, suffer from the so-called ABA problem. The simplest and most efficient solution to the ABA problem is to include a tag with the memory location such that the tag is incremented with each update of the target location. This solution, however, is theoretically unsound and has limited applicability. This paper presents a general lock-free pattern that is based on the synchronization primitive CAS without causing ABA problem or problems with wrap around. It can be used to provide lock-free functionality for any data type. Our algorithm is a CAS variation of Herlihy's LL/SC methodology for lock-free transformation. The basis of our techniques is to poll different locations on reading and writing objects in such a way that the consistency of an object can be checked by its location instead of its tag. It consists of simple code that can be easily implemented using C-like languages. A true problem of lock-free algorithms is that they are hard to design correctly, which even holds for apparently straightforward algorithms. We therefore develop a reduction theorem that enables us to reason about the general lock-free algorithm to be designed on a higher level than the synchronization primitives. The reduction theorem is based on Lamport's refinement mappings, and has been verified with the higher-order interactive theorem prover PVS. Using the reduction theorem, fewer invariants are required and some invariants are easier to discover and formulate without considering the internal structure of the final implementation.