Synonyms
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...
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Bibliography
Afek Y, De Levie Y (2007) Efficient adaptive collect algorithms. Distrib Comput 20(3):221–238
Afek Y, Attiya H, Dolev D, Gafni E, Merritt M, Shavit N (1993) Atomic snapshots of shared memory. J ACM 40(4):873–890
Afek Y, Stupp G, Touitou D (2002) Long-lived adaptive splitter and applications. Distrib Comput 15(2):6786
Aspnes J, Herlihy M, Shavit N (1994) Counting networks. J ACM 41(5):1020–1048
Attiya H, Fouren A (2001) Adaptive and efficient algorithms for lattice agreement and renaming. SIAM J Comput 31(2):642–664
Attiya H, Fouren A (2003) Algorithms adaptive to point contention. J ACM 50(4):444–468
Attiya H, Welch J (2004) Distributed computing: fundamentals, simulations and advanced topics. Wiley, Hoboken
Attiya H, Lynch NA, Shavit N (1994) Are wait-free algorithms fast? J ACM 41(4):725–763
Attiya H, Fouren A, Gafni E (2002) An adaptive collect algorithm with applications. Distrib Comput 15(2):87–96
Attiya H, Guerraoui R, Hendler D, Kuznetsov P (2009) The complexity of obstruction free implementations. J ACM 56(4):1–33
Borowsky E, Gafni E (1993) Generalized FLP impossibility result for t-resilient asynchronous computations. In: STOC 1993, San Diego, pp 91–100
Dwork C, Herlihy M, Waarts O (1997) Contention in shared memory algorithms. J ACM 44(6):779–805
Fich F, Ruppert E (2003) Hundreds of impossibility results for distributed computing. Distrib Comput 16(2–3):121–163
Gafni E, Merritt M, Taubenfeld G (2001) The concurrency hierarchy, and algorithms for unbounded concurrency. In: PODC 2001, Newport, pp 161–169
Herlihy M (1991) Wait-free synchronization. ACM Trans Program Lang Syst 13(1):124–149
Herlihy M, Moss E (1993) Transactional memory: architectural support for lock-free data structures. In: ISCA 1993, San Diego, pp 289–300
Herlihy M, Shavit N (1999) The topological structure of asynchronous computability. J ACM 46(6):858–923
Herlihy M, Shavit N (2008) The art of multiprocessor programming. Morgan Kaufman, Amsterdam
Herlihy M, Wing J (1990) Linearizability: a correctness condition for concurrent objects. ACM Trans Program Lang Syst 12(3): 463–492
Herlihy M, Shavit N, Waarts O (1996) Linearizable counting networks. Distrib Comput 9(4):193–203
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
Herlihy M, Luchangco V, Moir M (2003) Obstruction-free synchronization: double-ended queues as an example. In: ICDCS 2003, Providence, pp 522–529
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
Jayanti P (1997) Robust wait-free hierarchies. J ACM 44(4): 592–614
Lamport L (1979) How to make a multiprocessor that correctly executes multiprocess programs. IEEE Trans Comput C28(9):690–691
Lamport L (1986) On interprocess communication. Part I: basic formalism. Distrib Comput 1(2):77–85
Lamport L (1986) On interprocess communication. Part II: algorithms. Distrib Comput 1(2):86–101
Lynch N (1996) Distributed algorithms. Morgan Kaufman, San Francisco
Michael M (2004) Hazard pointers: safe memory reclamation for lock-free objects. IEEE Trans Parallel Distrib Syst 15(6):491–504
Saks ME, Zaharoglou F (2000) Wait-free k-set agreement is impossible: the topology of public knowledge. SIAM J Comput 29(5):1449–1483
Shavit N, Touitou D (1997) Software transactional memory. Distrib Comput 10(2):99–116
Taubenfeld G (2006) Synchronization algorithms and concurrent programming. Pearson/Prentice Hall, Harlow
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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
DOI: https://doi.org/10.1007/978-0-387-09766-4_185
Publisher Name: Springer, Boston, MA
Print ISBN: 978-0-387-09765-7
Online ISBN: 978-0-387-09766-4
eBook Packages: Computer ScienceReference Module Computer Science and Engineering