Skip to main content

Non-Blocking Algorithms

  • Reference work entry
Encyclopedia of Parallel Computing

Synonyms

Lock-free algorithms

Definition

Non-blocking algorithms are shared-memory multiprocessor algorithms that can avoid race conditions and guarantee correctness without using mutual exclusion locks. They are in general more resilient to asynchronous conditions than lock-based algorithms since they guarantee progress even if some of the threads participating in the algorithm are delayed for a long duration or even fail-stop. (The definition of the terms “non-blocking” and “lock-free” has changed in recent years, creating some terminology confusion. In the past, an algorithm was called “non-blocking” if it guaranteed global progress and “lock-free” if it did not rely on mutual exclusion locks. In recent years, most authors call an algorithm “lock-free” if it guarantees global progress and “non-blocking” if the delay of some threads cannot delay other threads indefinitely. This entry adopts the latter terminology since it is more widely used nowadays. Precise definitions are provided...

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 1,600.00
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 1,799.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Bibliography

  1. Afek Y, De Levie Y (2007) Efficient adaptive collect algorithms. Distrib Comput 20(3):221–238

    Google Scholar 

  2. Afek Y, Attiya H, Dolev D, Gafni E, Merritt M, Shavit N (1993) Atomic snapshots of shared memory. J ACM 40(4):873–890

    MATH  Google Scholar 

  3. Afek Y, Stupp G, Touitou D (2002) Long-lived adaptive splitter and applications. Distrib Comput 15(2):6786

    Google Scholar 

  4. Aspnes J, Herlihy M, Shavit N (1994) Counting networks. J ACM 41(5):1020–1048

    MATH  MathSciNet  Google Scholar 

  5. Attiya H, Fouren A (2001) Adaptive and efficient algorithms for lattice agreement and renaming. SIAM J Comput 31(2):642–664

    MATH  MathSciNet  Google Scholar 

  6. Attiya H, Fouren A (2003) Algorithms adaptive to point contention. J ACM 50(4):444–468

    MathSciNet  Google Scholar 

  7. Attiya H, Welch J (2004) Distributed computing: fundamentals, simulations and advanced topics. Wiley, Hoboken

    Google Scholar 

  8. Attiya H, Lynch NA, Shavit N (1994) Are wait-free algorithms fast? J ACM 41(4):725–763

    MATH  Google Scholar 

  9. Attiya H, Fouren A, Gafni E (2002) An adaptive collect algorithm with applications. Distrib Comput 15(2):87–96

    Google Scholar 

  10. Attiya H, Guerraoui R, Hendler D, Kuznetsov P (2009) The complexity of obstruction free implementations. J ACM 56(4):1–33

    MathSciNet  Google Scholar 

  11. Borowsky E, Gafni E (1993) Generalized FLP impossibility result for t-resilient asynchronous computations. In: STOC 1993, San Diego, pp 91–100

    Google Scholar 

  12. Dwork C, Herlihy M, Waarts O (1997) Contention in shared memory algorithms. J ACM 44(6):779–805

    MATH  MathSciNet  Google Scholar 

  13. Fich F, Ruppert E (2003) Hundreds of impossibility results for distributed computing. Distrib Comput 16(2–3):121–163

    Google Scholar 

  14. Gafni E, Merritt M, Taubenfeld G (2001) The concurrency hierarchy, and algorithms for unbounded concurrency. In: PODC 2001, Newport, pp 161–169

    Google Scholar 

  15. Herlihy M (1991) Wait-free synchronization. ACM Trans Program Lang Syst 13(1):124–149

    Google Scholar 

  16. Herlihy M, Moss E (1993) Transactional memory: architectural support for lock-free data structures. In: ISCA 1993, San Diego, pp 289–300

    Google Scholar 

  17. Herlihy M, Shavit N (1999) The topological structure of asynchronous computability. J ACM 46(6):858–923

    MATH  MathSciNet  Google Scholar 

  18. Herlihy M, Shavit N (2008) The art of multiprocessor programming. Morgan Kaufman, Amsterdam

    Google Scholar 

  19. Herlihy M, Wing J (1990) Linearizability: a correctness condition for concurrent objects. ACM Trans Program Lang Syst 12(3): 463–492

    Google Scholar 

  20. Herlihy M, Shavit N, Waarts O (1996) Linearizable counting networks. Distrib Comput 9(4):193–203

    Google Scholar 

  21. Herlihy M, Luchangco V, Moir M, Scherer III WN (2003) Software transactional memory for dynamic-sized data structures. In: PODC 2003, Boston, pp 92–101

    Google Scholar 

  22. Herlihy M, Luchangco V, Moir M (2003) Obstruction-free synchronization: double-ended queues as an example. In: ICDCS 2003, Providence, pp 522–529

    Google Scholar 

  23. Herlihy M, Luchangco V, Martin PA, Moir M (2005) Nonblocking memory management support for dynamic-sized data structures. ACM Trans Comput Syst 23(2):146–196

    Google Scholar 

  24. Jayanti P (1997) Robust wait-free hierarchies. J ACM 44(4): 592–614

    MATH  MathSciNet  Google Scholar 

  25. Lamport L (1979) How to make a multiprocessor that correctly executes multiprocess programs. IEEE Trans Comput C28(9):690–691

    Google Scholar 

  26. Lamport L (1986) On interprocess communication. Part I: basic formalism. Distrib Comput 1(2):77–85

    MATH  Google Scholar 

  27. Lamport L (1986) On interprocess communication. Part II: algorithms. Distrib Comput 1(2):86–101

    MATH  Google Scholar 

  28. Lynch N (1996) Distributed algorithms. Morgan Kaufman, San Francisco

    MATH  Google Scholar 

  29. Michael M (2004) Hazard pointers: safe memory reclamation for lock-free objects. IEEE Trans Parallel Distrib Syst 15(6):491–504

    Google Scholar 

  30. Saks ME, Zaharoglou F (2000) Wait-free k-set agreement is impossible: the topology of public knowledge. SIAM J Comput 29(5):1449–1483

    MATH  MathSciNet  Google Scholar 

  31. Shavit N, Touitou D (1997) Software transactional memory. Distrib Comput 10(2):99–116

    Google Scholar 

  32. Taubenfeld G (2006) Synchronization algorithms and concurrent programming. Pearson/Prentice Hall, Harlow

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer Science+Business Media, LLC

About this entry

Cite this entry

Hendler, D. (2011). Non-Blocking Algorithms. In: Padua, D. (eds) Encyclopedia of Parallel Computing. Springer, Boston, MA. https://doi.org/10.1007/978-0-387-09766-4_185

Download citation

Publish with us

Policies and ethics