Lock-free synchronization guarantees system-wide progress: within a finite number of steps, some thread completes its operation. It does not guarantee that every thread completes, making it weaker than wait-free synchronization but stronger than blocking approaches. section 8.5 section 8.5.1
Use lock-free progress conditions to reason about concurrent operations and latency:
- Contrast blocking synchronization, where mutex ownership provides essentially no progress guarantee and waiting times can become unpredictable. section 8.5.1
- Distinguish lock-free from wait-free: lock-free guarantees that some thread progresses, while wait-free guarantees that every thread finishes within finite time. section 8.5
- Treat lock-free synchronization as a low-latency alternative to mutexes, spinlocks, and read–write locks, while recognizing that wait-free synchronization provides the stronger guarantee. section 8.5.1 section 8.7
Why blocking progress is weaker
A thread waiting for a mutex may be delayed by a long critical section, deadlock, or another thread acquiring the mutex first. Lock-free progress avoids requiring every thread to acquire a shared lock before some operation can complete. section 8.5.1
Figure 8.3 The relationship between different wait-free and lock-free progress conditions
Use the progress-condition relationship to place lock-free synchronization between blocking or starvation-free approaches and wait-free guarantees. section 8.5.1


