liveBook · Manning

Obstruction-free

As explained in Latency

Obstruction-free is a progress guarantee that an operation completes if it eventually executes alone without interference.

Obstruction-free is a weak concurrency progress guarantee: an operation completes in finite time when it eventually runs in isolation, without interference or contention from other threads. It says nothing about completion under sustained competition. section 8.5.1

Use obstruction-free to reason about these operational trade-offs:

  • Isolation enables progress, but competing threads can repeatedly interfere and produce livelock. section 8.5.1
  • The guarantee is stronger than blocking but weaker than lock-free and wait-free progress conditions. section 8.5.1 section 8.7
  • Obstruction-freedom may be insufficient for low-latency systems because contention can prevent predictable completion. section 8.5.1

Mutex contention as a contrast

A thread holding a mutex can delay another thread indefinitely, and a later contender may acquire the mutex first. This illustrates blocking rather than obstruction-free progress; obstruction-freedom instead guarantees completion only when the operation eventually runs without competing interference. section 8.5.1

Figure 8.3 The relationship between different wait-free and lock-free progress conditions
Figure 8.3: The relationship between different wait-free and lock-free progress conditions.

Compare obstruction-free with neighboring wait-free and lock-free progress conditions. section 8.5.1

How Latency covers it

How deep it goes
Defines isolated completion, explains contention and livelock, and stops short of implementation details or algorithms.
Examples
Uses mutex ownership and competing thread acquisition to contrast blocking with isolated progress.
What it assumes
Assumes familiarity with concurrent threads, contention, mutexes, and basic synchronization progress conditions.
What you can do after
Evaluate/understand whether contention and interference make an obstruction-free guarantee unsuitable for predictable low-latency systems.
How it connects
Connects obstruction-free progress with blocking, starvation-free, lock-free, wait-free synchronization, mutexes, and livelock.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Latency. The section links point to the parts of the book it draws on.