Live briefing
Everything about Non-blocking algorithm
Algorithm in a thread whose failure cannot cause another thread to fail
In computer science, an algorithm is called non-blocking if failure or suspension of any thread cannot cause failure or suspension of another thread; for some operations, these algorithms provide a useful alternative to traditional blocking implementations. A non-blocking algorithm is lock-free if there is guaranteed system-wide progress, and wait-free if there is also guaranteed per-thread progress. "Non-blocking" was used as a synonym for "lock-free" in the literature until the introduction of obstruction-freedom in 2003. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: Non-blocking algorithmA 5-minute orientation
- Skim a recent paper: An improved non-dominated sorting genetic algorithm II for distributed heterogeneous hybrid flow-shop scheduling with blocking constraintsInfluential work since 2022
- Pick up a classic book: Invitation to Computer ScienceThe most-reprinted book on the subject
- Read the landmark paper: Proving that non-blocking algorithms don't blockCited 18 times
- Go sideways: Double compare-and-swapA closely related topic
- Go sideways: Compare-and-swapA closely related topic
📖 Definitions
No dictionary entry for this exact phrase.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
Proving that non-blocking algorithms don't block
Loss-Aware Switch Design and Non-Blocking Detection Algorithm for Intra-Chip Scale Photonic Interconnection Networks
An Improved/Optimized Practical Non-Blocking PageRank Algorithm for Massive Graphs*
A Non-blocking Checkpointing Algorithm for Distributed Systems
Asynchronous Non-Blocking Algorithm to Handle Straggler Reduce Tasks in Hadoop System
Non-blocking Disk-tape Join Algorithm for Data on Tertiary Storage Systems
🆕 Influential since 2022
📚 Books worth reading
Invitation to Computer ScienceG. Michael Schneider, Judith L. Gersting · 1995
Principles of Distributed SystemsRoberto Baldoni · 2012
Intelligent Information and Database SystemsAli Selamat · 2013
Data structures & algorithms in JavaRobert Lafore · 2003- 📕Everyday CryptographyKeith M. Martin · 2012
Principles of gene manipulation and genomicsS. B. Primrose · 2006
Advances in Information and Computer SecurityGoichiro Hanaoka · 2012
Advances in Computing, Communication, and ControlSrija Unnikrishnan · 2013
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- Double compare-and-swap Double compare-and-swap (DCAS or CAS2) is an atomic primitive proposed to support certain concurrent programming techniques. DCAS takes two not necessarily…
- Compare-and-swap In computer science, compare-and-swap (CAS) is an atomic instruction used in multithreading to achieve synchronization. It compares the contents of a memory…
- Linearizability In concurrent programming, an operation (or set of operations) is linearizable if it consists of an ordered list of invocation and response events, that…
- Concurrent data structure In computer science, a concurrent data structure (also called shared data structure) is a data structure designed for access and modification by multiple…
- Read–modify–write In computer science, read–modify–write is a class of atomic operations (such as test-and-set, fetch-and-add, and compare-and-swap) that both read a memory…
- Mutual exclusion In computer science, mutual exclusion is a property of concurrency control, which is instituted for the purpose of preventing race conditions. It is the…
- Non-blocking linked list A non-blocking linked list is an example of non-blocking data structures designed to implement a linked list in shared memory using synchronization primitives:…
- Transactional memory In computer science and engineering, transactional memory attempts to simplify concurrent programming by allowing a group of load and store instructions…