Wait-Free Linked-Lists

  • Shahar Timnat
  • Anastasia Braginsky
  • Alex Kogan
  • Erez Petrank
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7702)


Wait-freedom is the strongest and most desirable progress guarantee, under which any thread must make progress when given enough CPU steps. Wait-freedom is required for hard real-time, and desirable in many other scenarios. However, because wait-freedom is hard to achieve, we usually settle for the weaker lock-free progress guarantee, under which one of the active threads is guaranteed to make progress. With lock-freedom (and unlike wait-freedom), starvation of all threads but one is possible.

The linked-list data structure is fundamental and ubiquitous. Lock-free versions of the linked-list are well known. However, whether it is possible to design a practical wait-free linked-list has remained an open question. In this work we present a practical wait-free linked-list based on the CAS primitive. To improve performance further, we also extend this design using the fast-path-slow-path methodology. The proposed design has been implemented and measurements demonstrate performance competitive with that of Harris’s lock-free list, while still providing the desirable wait-free guarantee, required for real-time systems.


Linearization Point State Array Fast Path Phase Number Insert Operation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Chuong, P., Ellen, F., Ramachandran, V.: A universal construction for wait-free transaction friendly data structures. In: SPAA, pp. 335–344 (2010)Google Scholar
  2. 2.
    Fatourou, P., Kallimanis, N.D.: A highly-efficient wait-free universal construction. In: SPAA, pp. 325–334 (2011)Google Scholar
  3. 3.
    Fomitchev, M., Ruppert, E.: Lock-free linked lists and skip lists. In: PODC, pp. 50–59. ACM, New York (2004)CrossRefGoogle Scholar
  4. 4.
    Harris, T.L.: A Pragmatic Implementation of Non-blocking Linked-Lists. In: Welch, J.L. (ed.) DISC 2001. LNCS, vol. 2180, pp. 300–314. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  5. 5.
    Herlihy, M.: A methodology for implementing highly concurrent objects. ACM Trans. Program. Lang. Syst. 15(5), 745–770 (1993)CrossRefGoogle Scholar
  6. 6.
    Herlihy, M., Shavit, N.: The Art of Multiprocessor Programming. Morgan Kaufmann (2008)Google Scholar
  7. 7.
    Kogan, A., Petrank, E.: Wait-free queues with multiple enqueuers and dequeuers. In: PPOPP, pp. 223–234 (2011)Google Scholar
  8. 8.
    Kogan, A., Petrank, E.: A methodology for creating fast wait-free data structures. In: PPOPP, pp. 141–150 (2012)Google Scholar
  9. 9.
    Michael, M.M.: Hazard pointers: Safe memory reclamation for lock-free objects. IEEE Trans. Parallel Distrib. Syst. 15(6), 491–504 (2004)CrossRefGoogle Scholar
  10. 10.
    Timnat, S., Braginsky, A., Kogan, A., Petrank, E.: Wait-free linked-lists. In: PPOPP, pp. 309–310 (2012)Google Scholar
  11. 11.
    Timnat, S., Braginsky, A., Kogan, A., Petrank, E.: Wait-free linked-lists (2012),
  12. 12.
    Valois, J.D.: Lock-free linked lists using compare-and-swap. In: PODC, pp. 214–222. ACM, New York (1995)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Shahar Timnat
    • 1
  • Anastasia Braginsky
    • 1
  • Alex Kogan
    • 1
  • Erez Petrank
    • 1
  1. 1.Dept. of Computer ScienceTechnionIsrael

Personalised recommendations