Efficient and Practical Composition of Lock-~Free Data Structures
A concurrent data object is lock-free if it guarantees that at least one, among all concurrent operations, finishes after a finite number of steps. In other words, a lock free technique guarantees that some thread always makes progress. Lock-free data objects offer several advantages over their blocking counterparts, such as being immune to deadlocks and priority inversion, and typically provide high scalability and performance, especially in shared memory multiprocessor architectures.
Composition of data structures is a powerful approach to combine simple data structures to create more complex ones. It works as a building block for many advanced useful data structures. In this thesis, we study the composition of lock-free data structures. We specifically consider a simple yet fundamental problem of combining two stacks to create a queue in a lock-free concurrent setting. Thus, we simulate the enqueue and dequeue operations of queues using the push and pop operations of stacks. Our work explores the challenges in combining the lock-free data structures with respect to ensuring the consistency as well as the lock-freedom of the composed data structure. We also implement the algorithm and experimentally evaluate its performance.