Non-blocking algorithm: Difference between revisions

Content deleted Content added
Adding short description: "Class of algorithms" (Shortdesc helper)
Bluelinking 1 books for verifiability.) #IABot (v2.1alpha3
Line 2:
{{distinguish|Non-blocking I/O}}
 
In [[computer science]], an [[algorithm]] is called '''non-blocking''' if failure or [[Scheduling (computing)|suspension]] of any [[thread (computing)|thread]] cannot cause failure or suspension of another thread;<ref>{{cite book|last1=Göetz|first1=Brian|last2=Peierls|first2=Tim|last3=Bloch|first3=Joshua|last4=Bowbeer|first4=Joseph|last5=Holmes|first5=David|last6=Lea|first6=Doug|title=Java concurrency in practice|date=2006|publisher=Addison-Wesley|___location=Upper Saddle River, NJ|isbn=9780321349606|page=41|url-access=registration|url=https://archive.org/details/javaconcurrencyi00goet}}</ref> for some operations, these algorithms provide a useful alternative to traditional [[lock (computer science)|blocking implementations]]. A non-blocking algorithm is '''lock-free''' if there is guaranteed system-wide [[Resource starvation|progress]], and '''wait-free''' if there is also guaranteed per-thread progress.
 
The word "non-blocking" was traditionally used to describe [[telecommunications network]]s that could route a connection through a set of relays "without having to re-arrange existing calls", see [[Clos network]]. Also, if the telephone exchange "is not defective, it can always make the connection", see [[nonblocking minimal spanning switch]].