skip to main content
research-article

Wait-free queues with multiple enqueuers and dequeuers

Published:12 February 2011Publication History
Skip Abstract Section

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. J. H. Anderson and M. Moir. Universal constructions for large objects. IEEE Trans. Parallel Distrib. Syst., 10 (12): 1317--1332, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. H. Attiya and A. Fouren. Adaptive and efficient algorithms for lattice agreement and renaming. SIAM J. Comput., 31 (2): 642--664, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. M. David. A single-enqueuer wait-free queue implementation. In Proc. Conf. on Distributed Computing (DISC), pages 132--143, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. M. Herlihy. Wait-free synchronization. ACM Trans. Program. Lang. Syst., 13 (1): 124--149, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Herlihy. A methodology for implementing highly concurrent objects. ACM Trans. Program. Lang. Syst., 15 (5): 745--770, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. M. Herlihy and N. Shavit. The Art of Multiprocessor Programming. Morgan Kaufmann, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. M. Herlihy and J. M. Wing. Linearizability: A correctness condition for concurrent objects. ACM Trans. Program. Lang. Syst., 12 (3): 463--492, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. E. Ladan-Mozes and N. Shavit. An optimistic approach to lock-free fifo queues. Distributed Computing, 20 (5): 323--341, 2008.Google ScholarGoogle ScholarCross RefCross Ref
  15. L. Lamport. A new solution of Dijkstra's concurrent programming problem. Commun. ACM, 17 (8): 453--455, 1974. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. L. Lamport. Specifying concurrent program modules. ACM Trans. Program. Lang. Syst., 5 (2): 190--222, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. H. Massalin and C. Pu. A lock-free multiprocessor OS kernel. Technical report CUCS-005--91, Computer Science Department, Columbia University, 1991.Google ScholarGoogle Scholar
  18. M. M. Michael. Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst., 15 (6): 491--504, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. S. Moran, G. Taubenfeld, and I. Yadin. Concurrent counting. In Proc. ACM Symposium on Principles of Distributed Computing (PODC), pages 59--70, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. K. R. Treiber. Systems programming: Coping with parallelism. Technical report RJ-5118, IBM Almaden Research Center, 1986.Google ScholarGoogle Scholar
  24. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  25. J. D. Valois. Implementing lock-free queues. In Proc. 7th Int. Conf. on Parallel and Distributed Computing Systems, pages 64--69, 1994.Google ScholarGoogle Scholar

Index Terms

  1. Wait-free queues with multiple enqueuers and dequeuers

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 46, Issue 8
        PPoPP '11
        August 2011
        300 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2038037
        Issue’s Table of Contents
        • cover image ACM Conferences
          PPoPP '11: Proceedings of the 16th ACM symposium on Principles and practice of parallel programming
          February 2011
          326 pages
          ISBN:9781450301190
          DOI:10.1145/1941553
          • General Chair:
          • Calin Cascaval,
          • Program Chair:
          • Pen-Chung Yew

        Copyright © 2011 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 12 February 2011

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!