Impossibility and universality results for wait-free synchronization
Maurice P. Herlihy · 1988
A Hjait-free implementation of a concurrent data object is one that guarantees that any process can complete any operation in a fmitt number of steps, regardless of the execution speeds of the other processes.'Rte problem of constructing a waitfree implementation of one data object from another lies at the heart of much recent work in atomic read/write registers, multiprocessor architectures, and concurrent data structures.In the first part of this paper, we introduce a simple and general technique, based on reduction to a consensus protocol, for proving statements of the form "there is no wait-free implementation of X by Y.'* We derive a hierarchy of objects such that no object at one level has a wait-free implementation in terms of objects at lower levels.In particular, we show that atomic read/write registers, which have been the focus of much recent attention, are at tbe bottom of the hierarchy: they cannot be used to construct wait-free implementations of many simple and familiar data types.Moreover, classical synchronization primitives such as test-and-set and fetch-and-add, while more powerful than read and write, are also computationally weak, as are the standard message-passing primitives.Nevertheless, in the second part of the paper, we show that there do exist simple universal objects from which one can construct a wait-free implementation of any sequential object.