
27 Apr
2005
27 Apr
'05
11:06 p.m.
Matt Hurd wrote:
Peter Dimov <pdimov@mmltd.net> wrote: The canonical definition of "lock free" is that the system as a whole always makes progress. An ordinary lock-based algorithm does not have this property; if the thread that obtained the lock suddenly dies, no other thread can move past that lock.
Thanks for clearing up the definition. Though I do find it confusing as I've seen people call stuff lock-free where the approach uses versioning and retry semantics based on an optimistic concurrency approach.
This can still be lock-free; even though a particular thread is not guaranteed to make progress, _some_ thread is. When every thread is guaranteed to make progress in a finite number of steps the algorithm is called "wait-free".