A fast mutual exclusion algorithm
ACM Transactions on Computer Systems (TOCS)
Distributing Hot-Spot Addressing in Large-Scale Multiprocessors
IEEE Transactions on Computers
Linearizability: a correctness condition for concurrent objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Transactions on Programming Languages and Systems (TOPLAS)
A methodology for implementing highly concurrent data objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Simple, fast, and practical non-blocking and blocking concurrent queue algorithms
PODC '96 Proceedings of the fifteenth annual ACM symposium on Principles of distributed computing
Fast, wait-free (2k-1)-renaming
Proceedings of the eighteenth annual ACM symposium on Principles of distributed computing
Proceedings of the thirteenth annual ACM symposium on Parallel algorithms and architectures
A Pragmatic Implementation of Non-blocking Linked-Lists
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
Obstruction-Free Synchronization: Double-Ended Queues as an Example
ICDCS '03 Proceedings of the 23rd International Conference on Distributed Computing Systems
Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects
IEEE Transactions on Parallel and Distributed Systems
A new fast-path mechanism for mutual exclusion
Distributed Computing
Using elimination to implement scalable and lock-free FIFO queues
Proceedings of the seventeenth annual ACM symposium on Parallelism in algorithms and architectures
An on-the-fly reference-counting garbage collector for java
ACM Transactions on Programming Languages and Systems (TOPLAS)
A scalable lock-free stack algorithm
Journal of Parallel and Distributed Computing
The Art of Multiprocessor Programming
The Art of Multiprocessor Programming
A universal construction for wait-free transaction friendly data structures
Proceedings of the twenty-second annual ACM symposium on Parallelism in algorithms and architectures
Flat combining and the synchronization-parallelism tradeoff
Proceedings of the twenty-second annual ACM symposium on Parallelism in algorithms and architectures
Non-blocking binary search trees
Proceedings of the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computing
Wait-free queues with multiple enqueuers and dequeuers
Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
A highly-efficient wait-free universal construction
Proceedings of the twenty-third annual ACM symposium on Parallelism in algorithms and architectures
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
Obstruction-Free algorithms can be practically wait-free
DISC'05 Proceedings of the 19th international conference on Distributed Computing
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
A practical wait-free simulation for lock-free data structures
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.00 |
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.