A synchronization technique is lock-free if it ensures only that some thread always makes progress.
A synchronization technique is obstruction-free if it guarantees progress for any thread that (eventually) executes in isolation.
A synchronization technique is wait-free if it ensures that every thread will continue to make progress.
- M. Herlihy, V. Luchangco, and M. Moir. Obstruction-free synchronization: double-ended queues as an example. International Conference on Distributed Computing Systems, pages 522-529. IEEE, 2003.