Abstract:
Lock-free data structures implement concurrent objects without the use of mutual exclusion. This approach can avoid performance problems due to unpredictable delays while processes are within critical sections. Although universal methods are known that give lock-free data structures for any abstract data type, the overhead of these methods makes them inefficient when compared to conventional techniques using mutual exclusion, such as spin locks. We give lock-free data structures and algorithms for implementing a shared singly-linked list, allowing concurrent traversal, insertion, and deletion by any number of processes. We also show how the basic data structure can be used as a building block for other lock-free data structures. Our algorithms use the single word Compare-and-Swap synchronization primitive to implement the linked list directly, avoiding the overhead of universal methods, and are thus a practical alternative to using spin locks. 1 Introduction A concurrent object is an...
Citations
|
1089
|
Impossibility of Distributed Consensus with One Faulty Process
– Fischer, Lynch, et al.
- 1985
|
|
582
|
Linearizability: A Correctness Condition for Concurrent Objects
– Herlihy, Wing
- 1990
|
|
529
|
Wait-free synchronization
– Herlihy
- 1991
|
|
372
|
Algorithms for Scalable Synchronization on SharedMemory Multiprocessors
– MELLOR-CRUMMEY, SCOTT
- 1991
|
|
254
|
A methodology for implementing highly concurrent data objects
– Herlihy
- 1993
|
|
218
|
Skip Lists: A Probabilistic Alternative to Balanced Trees
– Pugh
- 1989
|
|
96
|
Concurrent reading and writing
– Lamport
- 1977
|
|
90
|
Synchronization Algorithms for Shared-Memory Multiprocessors
– Graunke, Thakkar
- 1990
|
|
81
|
The Scalable Coherent Interface and Related Standards Projects
– GUSTAVSON
- 1992
|
|
81
|
Alock-free multiprocessor os kernel
– Massalin, Pu
- 1991
|
|
70
|
Impossibility and universality results for wait-free synchronization
– Herlihy
|
|
59
|
Fast Mutual Exclusion for Uniprocessors
– Bershad, Redell, et al.
- 1992
|
|
58
|
A method for implementing lock-free shared data structures
– Barnes
- 1993
|
|
50
|
Lock-Free Data Structures
– Valois
- 1995
|
|
43
|
Wait-Free Parallel Algorithms for the Union-Find Problem
– Anderson, Woll
- 1991
|
|
43
|
Sticky Bits and Universality of Consensus
– Plotkin
- 1989
|
|
43
|
Implementing lock-free queues
– Valois
- 1994
|
|
40
|
Low-overhead scheduling of nested parallelism
– Hummel, Schonberg
- 1991
|
|
33
|
Performance issues in non-blocking synchronization on sharedmemory multiprocessors
– Alemany, Felten
- 1992
|
|
33
|
Lock-free garbage collection for multiprocessors
– Herlihy, Moss
- 1992
|
|
33
|
Locking Without Blocking: Making Lock Based Concurrent Data Structure Algorithms Non-Blocking
– Turek, Shasha, et al.
- 1992
|
|
23
|
Concurrent Maintenance of Skip Lists
– Pugh
- 1990
|
|
21
|
Concurrent set manipulation without locking
– Lanin, Shasha
- 1988
|
|
11
|
An Analysis of Concurrent Priority Queue Algorithms
– Huang
- 1990
|
|
7
|
Operating System Support for High Performance Multiprocessing
– Anderson
- 1991
|
|
6
|
Implementation of general-purpose atomic primitives for distributed shared-memory multiprocessors
– Michael, Scott
- 1995
|
|
3
|
Process synchronization without longterm interlock
– Easton
- 1972
|