Abstract
This paper presents a novel approach for highly-concurrent nonblocking implementations of doubly-linked lists, based on dynamically maintaining a coloring of the nodes in the list. In these implementations, operations on non-adjacent nodes in the linked-list proceed without interfering with each other. Roughly speaking, the operations are implemented by acquiring nodes in the operation's data set, in the order of their colors, and then making the changes atomically. The length of waiting chains is restricted, thereby increasing concurrency, because the colors are taken from a small set. Operations carefully update the colors of the nodes they modify, so neighboring nodes in the list have different colors. A helping mechanism ensures progress in small neighborhoods of processes that keep taking steps. We use this approach in two new algorithms: CAS-Chromo uses an unary conditional primitive, cas, and allows insertions anywhere in the linked list and removals only at the ends, while DCAS-Chromo allows insertions and removals anywhere but uses a stronger primitive, dcas.
| Original language | English |
|---|---|
| Pages (from-to) | 729-762 |
| Number of pages | 34 |
| Journal | Theory of Computing Systems |
| Volume | 52 |
| Issue number | 4 |
| DOIs | |
| State | Published - May 2013 |
Keywords
- Asynchronous shared memory
- Concurrent data structures
- Double-ended queue
- Doubly-linked list
- Local nonblocking implementations
- Priority queue
All Science Journal Classification (ASJC) codes
- Theoretical Computer Science
- Computational Theory and Mathematics