Today I read a paper titled “Lock-Free and Practical Deques using Single-Word Compare-And-Swap”
The abstract is:
We present an efficient and practical lock-free implementation of a concurrent deque that is disjoint-parallel accessible and uses atomic primitives which are available in modern computer systems.
Previously known lock-free algorithms of deques are either based on non-available atomic synchronization primitives, only implement a subset of the functionality, or are not designed for disjoint accesses.
Our algorithm is based on a doubly linked list, and only requires single-word compare-and-swap atomic primitives, even for dynamic memory sizes.
We have performed an empirical study using full implementations of the most efficient algorithms of lock-free deques known.
For systems with low concurrency, the algorithm by Michael shows the best performance.
However, as our algorithm is designed for disjoint accesses, it performs significantly better on systems with high concurrency and non-uniform memory architecture.