Advertisement

Practical Lock-Free and Wait-Free LL/SC/VL Implementations Using 64-Bit CAS

  • Maged M. Michael
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3274)

Abstract

The ideal semantics of the instructions LL/SC/VL (Load-Linked, Store-Conditional, Validate) are inherently immune to the ABA problem which is a fundamental problem that affects most lock-free algorithms. This paper presents practical lock-free and wait-free implementations of arbitrary-sized LL/SC/VL variables using 64-bit CAS (Compare-and-Swap). The implementations improve on Jayanti and Petrovic’s 64-bit wait-free implementations by reducing the space overhead per variable to a small constant, and not requiring advance knowledge of the maximum number of participating threads, while maintaining minimal amortized expected time and work complexities.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Anderson, J.H., Moir, M.: Universal constructions for multi-object operations. In: Proceedings of the Fourteenth Annual ACM Symposium on Principles of Distributed Computing, pp. 184–193 (1995)Google Scholar
  2. 2.
    Herlihy, M.P.: Wait-free synchronization. ACM Transactions on Programming Languages and Systems 13(1), 124–149 (1991)CrossRefGoogle Scholar
  3. 3.
    Herlihy, M.P.: A methodology for implementing highly concurrent objects. ACM Transactions on Programming Languages and Systems 15(5), 745–770 (1993)CrossRefGoogle Scholar
  4. 4.
    Herlihy, M.P., Wing, J.M.: Linearizability: A correctness condition for concurrent objects. ACM Transactions on Programming Languages and Systems 12(3), 463–492 (1990)CrossRefGoogle Scholar
  5. 5.
    IBM System/370 Extended Architecture, Principles of Operation, Publication No. SA22-7085 (1983)Google Scholar
  6. 6.
    Jayanti, P.: A complete and constant time wait-free implementation of CAS from LL/SC and vice versa. In: Proceedings of the Twelfth International Symposium on Distributed Computing, September 1998, pp. 216–230 (1998)Google Scholar
  7. 7.
    Jayanti, P., Petrovic, S.: Efficient and practical constructions of LL/SC variables. In: Proceedings of the Twenty-Second Annual ACM Symposium on Principles of Distributed Computing, July 2003, pp. 285–294 (2003)Google Scholar
  8. 8.
    Michael, M.M.: ABA prevention using single-word instructions. Technical Report RC 23089, IBM T. J. Watson Research Center (January 2004)Google Scholar
  9. 9.
    Michael, M.M.: Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Transactions on Parallel and Distributed Systems 15(6), 491–504 (2004); Earlier version in 21st PODC, pp. 21–30 (July 2002)CrossRefGoogle Scholar
  10. 10.
    Michael, M.M.: Scalable lock-free dynamic memory allocation. In: Proceedings of the 2004 ACM SIGPLAN Conference on Programming Language Design and Implementation, June 2004, pp. 35–46 (2004)Google Scholar
  11. 11.
    Moir, M.: Practical implementations of non-blocking synchronization primitives. In: Proceedings of the 16th Annual ACM Symposium on Principles of Distributed Computing, August 1997, pp. 219–228 (1997)Google Scholar
  12. 12.
    PowerPC Microprocessor Family: The Programming Environment (1991)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Maged M. Michael
    • 1
  1. 1.IBM Thomas J. Watson Research CenterYorktown HeightsUSA

Personalised recommendations