Wait-free synchronization
- 1 January 1991
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 13 (1) , 124-149
- https://doi.org/10.1145/114005.102808
Abstract
A wait-free implementation of a concurrent data object is one that guarantees that any process can complete any operation in a finite number of steps, regardless of the execution speeds of the other processes. The problem of constructing a wait-free implementation of one data object from another lies at the heart of much recent work in concurrent algorithms, concurrent data structures, and multiprocessor architectures. First, we introduce a simple and general technique, based on reduction to a concensus 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 the bottom of the hierarchy: thay cannot be used to construct wait-free implementations of many simple and familiar data types. Moreover, classical synchronization primitives such astest&set and fetch&add, while more powerful than read and write, are also computationally weak, as are the standard message-passing primitives. Second, nevertheless, we show that there do exist simple universal objects from which one can construct a wait-free implementation of any sequential object.Keywords
This publication has 14 references indexed in Scilit:
- Fast randomized consensus using shared memoryJournal of Algorithms, 1990
- A methodology for implementing highly concurrent data structuresPublished by Association for Computing Machinery (ACM) ,1990
- Impossibility and universality results for wait-free synchronizationPublished by Association for Computing Machinery (ACM) ,1988
- On the minimal synchronism needed for distributed consensusJournal of the ACM, 1987
- On interprocess communicationDistributed Computing, 1986
- Impossibility of distributed consensus with one faulty processJournal of the ACM, 1985
- Specifying Concurrent Program ModulesACM Transactions on Programming Languages and Systems, 1983
- Basic Techniques for the Efficient Coordination of Very Large Numbers of Cooperating Sequential ProcessorsACM Transactions on Programming Languages and Systems, 1983
- How to Make a Multiprocessor Computer That Correctly Executes Multiprocess ProgramsIEEE Transactions on Computers, 1979
- Concurrent reading and writingCommunications of the ACM, 1977