Abstract
The queue data structure is fundamental and ubiquitous. Lock-free versions of the queue are well known. However, an important open question is whether practical wait-free queues exist. Until now, only versions with limited concurrency were proposed. In this paper we provide a design for a practical wait-free queue. Our construction is based on the highly efficient lock-free queue of Michael and Scott. To achieve wait-freedom, we employ a priority-based helping scheme in which faster threads help the slower peers to complete their pending operations. We have implemented our scheme on multicore machines and present performance measurements comparing our implementation with that of Michael and Scott in several system configurations.
- Y. Afek and M. Merritt. Fast, wait-free (2k-1)-renaming. In ACM Symposium on Principles of Distributed Computing (PODC), pages 105--112, 1999. Google Scholar
Digital Library
- Y. Afek, D. Dauber, and D. Touitou. Wait-free made fast. In Proc. ACM Symposium on Theory of Computing (STOC), pages 538--547, 1995. Google Scholar
Digital Library
- J. Alemany and E. W. Felten. Performance issues in non-blocking synchronization on shared-memory multiprocessors. In Proc. ACM Symposium on Principles of Distributed Computing (PODC), pages 125--134, 1992. Google Scholar
Digital Library
- J. H. Anderson and M. Moir. Universal constructions for large objects. IEEE Trans. Parallel Distrib. Syst., 10 (12): 1317--1332, 1999. Google Scholar
Digital Library
- R. J. Anderson and H. Woll. Wait-free parallel algorithms for the union-find problem. In Proc. ACM Symposium on Theory of Computing (STOC), pages 370--380, 1991. Google Scholar
Digital Library
- H. Attiya and A. Fouren. Adaptive and efficient algorithms for lattice agreement and renaming. SIAM J. Comput., 31 (2): 642--664, 2001. Google Scholar
Digital Library
- P. Chuong, F. Ellen, and V. Ramachandran. A universal construction for wait-free transaction friendly data structures. In Proc. ACM Symposium on Parallel Algorithms (SPAA), pages 335--344, 2010. Google Scholar
Digital Library
- M. David. A single-enqueuer wait-free queue implementation. In Proc. Conf. on Distributed Computing (DISC), pages 132--143, 2004. Google Scholar
Digital Library
- M. Herlihy. Wait-free synchronization. ACM Trans. Program. Lang. Syst., 13 (1): 124--149, 1991. Google Scholar
Digital Library
- M. Herlihy. A methodology for implementing highly concurrent objects. ACM Trans. Program. Lang. Syst., 15 (5): 745--770, 1993. Google Scholar
Digital Library
- M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Google Scholar
Digital Library
- M. Herlihy and J. M. Wing. Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12 (3): 463--492, 1990. Google Scholar
Digital Library
- P. Jayanti and S. Petrovic. Logarithmic-time single deleter, multiple inserter wait-free queues and stacks. In Proc. Conf. on Found. of Soft. Technology and Theor. (FSTTCS), pages 408--419, 2005. Google Scholar
Digital Library
- E. Ladan-Mozes and N. Shavit. An optimistic approach to lock-free fifo queues. Distributed Computing, 20 (5): 323--341, 2008.Google Scholar
Cross Ref
- L. Lamport. A new solution of Dijkstra's concurrent programming problem. Commun. ACM, 17 (8): 453--455, 1974. Google Scholar
Digital Library
- L. Lamport. Specifying concurrent program modules. ACM Trans. Program. Lang. Syst., 5 (2): 190--222, 1983. Google Scholar
Digital Library
- H. Massalin and C. Pu. A lock-free multiprocessor OS kernel. Technical report CUCS-005--91, Computer Science Department, Columbia University, 1991.Google Scholar
- M. M. Michael. Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst., 15 (6): 491--504, 2004. Google Scholar
Digital Library
- M. M. Michael and M. L. Scott. Simple, fast, and practical non-blocking and blocking concurrent queue algorithms. In Proc. ACM Symposium on Principles of Distributed Computing (PODC), pages 267--275, 1996. Google Scholar
Digital Library
- M. Moir. Laziness pays! Using lazy synchronization mechanisms to improve non-blocking constructions. In Proc. ACM Symposium on Principles of Distributed Computing (PODC), pages 61--70, 2000. Google Scholar
Digital Library
- M. Moir, D. Nussbaum, O. Shalev, and N. Shavit. Using elimination to implement scalable and lock-free FIFO queues. In Proc. ACM Symposium on Parallel Algorithms (SPAA), pages 253--262, 2005. Google Scholar
Digital Library
- S. Moran, G. Taubenfeld, and I. Yadin. Concurrent counting. In Proc. ACM Symposium on Principles of Distributed Computing (PODC), pages 59--70, 1992. Google Scholar
Digital Library
- K. R. Treiber. Systems programming: Coping with parallelism. Technical report RJ-5118, IBM Almaden Research Center, 1986.Google Scholar
- P. Tsigas and Y. Zhang. A simple, fast and scalable non-blocking concurrent FIFO queue for shared memory multiprocessor systems. In Proc. ACM Symposium on Parallel Algorithms (SPAA), pages 134--143, 2001. Google Scholar
Digital Library
- J. D. Valois. Implementing lock-free queues. In Proc. 7th Int. Conf. on Parallel and Distributed Computing Systems, pages 64--69, 1994.Google Scholar
Index Terms
Wait-free queues with multiple enqueuers and dequeuers
Recommendations
A wait-free queue as fast as fetch-and-add
PPoPP '16: Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel ProgrammingConcurrent data structures that have fast and predictable performance are of critical importance for harnessing the power of multicore processors, which are now ubiquitous. Although wait-free objects, whose operations complete in a bounded number of ...
Wait-free queues with multiple enqueuers and dequeuers
PPoPP '11: Proceedings of the 16th ACM symposium on Principles and practice of parallel programmingThe queue data structure is fundamental and ubiquitous. Lock-free versions of the queue are well known. However, an important open question is whether practical wait-free queues exist. Until now, only versions with limited concurrency were proposed. In ...
Highly-Efficient Wait-Free Synchronization
We study a simple technique, originally presented by Herlihy (ACM Trans. Program. Lang. Syst. 15(5):745---770, 1993 ), for executing concurrently, in a wait-free manner, blocks of code that have been programmed for sequential execution and require ...







Comments