Abstract
Lock-freedom is a progress guarantee that ensures overall program progress. Wait-freedom is a stronger progress guarantee that ensures the progress of each thread in the program. While many practical lock-free algorithms exist, wait-free algorithms are typically inefficient and hardly used in practice. In this paper, we propose a methodology called fast-path-slow-path for creating efficient wait-free algorithms. The idea is to execute the efficient lock-free version most of the time and revert to the wait-free version only when things go wrong. The generality and effectiveness of this methodology is demonstrated by two examples. In this paper, we apply this idea to a recent construction of a wait-free queue, bringing the wait-free implementation to perform in practice as efficient as the lock-free implementation. In another work, the fast-path-slow-path methodology has been used for (dramatically) improving the performance of a wait-free linked-list.
Original language | English |
---|---|
Pages (from-to) | 141-150 |
Number of pages | 10 |
Journal | ACM SIGPLAN Notices |
Volume | 47 |
Issue number | 8 |
DOIs | |
State | Published - Aug 2012 |
Keywords
- Concurrent data structures
- Lock-free algorithms
- Non-blocking synchronization
- Wait-free queues
All Science Journal Classification (ASJC) codes
- General Computer Science