2014 · 51 citations · 17 references
ComputingComputer EngineeringComputer ScienceData StructuresParallel AlgorithmsParallel ComputingParallel Data StructuresParallel Performance AnalysisSkip ListsConcurrent Skip ListsConcurrent Tree Data StructuresLock-free AlgorithmsLock-free Data StructuresLock-free Skip ListsStarvation AvoidanceWait-free AlgorithmsWait-free Data Structures
Lock-free data structures guarantee overall system progress, whereas wait-free data structures guarantee the progress of each and every thread, providing the desirable non-starvation guarantee for concurrent data structures. While practical lock-free implementations are known for various data structures, wait-free data structure designs are rare. Wait-free implementations have been notoriously hard to design and often inefficient. In this work we present a transformation of lock-free algorithms to wait-free ones allowing even a non-expert to transform a lock-free data-structure into a practical wait-free one. The transformation requires that the lock-free data structure is given in a normalized form defined in this work. Using the new method, we have designed and implemented wait-free linked-list, skiplist, and tree and we measured their performance. It turns out that for all these data structures the wait-free implementations are only a few percent slower than their lock-free counterparts, while still guaranteeing non-starvation.
17
A fast mutual exclusion algorithm
Leslie Lamport · ACM Transactions on Computer Systems · 1987 · 487 citations · Full text
Non-blocking binary search trees
Faith Ellen, Panagiota Fatourou, Eric Ruppert et al. · 2010 · 190 citations