Starvation-free is a progress guarantee for concurrent operations: every thread eventually makes progress, although completion may be delayed significantly. It is stronger than blocking but may still be unsuitable for low-latency systems that require predictable delays. section 8.5.1
A plain mutex provides blocking progress: one thread may hold the lock for a long time, and another may wait indefinitely or lose the lock to competing threads. A fair queue-based lock improves this situation by ordering waiters, illustrating how fairness supports starvation-free progress. section 8.5.1
Compare starvation-free progress with neighboring guarantees:
- Blocking provides no progress guarantee and can cause high tail latency. section 8.5.1
- Obstruction-free completion is guaranteed only when an operation runs in isolation, so contention can still cause interference or livelock. section 8.5.1
- Starvation-free guarantees eventual progress but not a tightly bounded completion time; wait-free synchronization targets more predictable low latency. section 8.5.1 section 8.7
Figure 8.3 The relationship between different wait-free and lock-free progress conditions
Use the progress-condition relationship figure to situate starvation-free among blocking, obstruction-free, lock-free, and wait-free guarantees. section 8.5.1
