We consider the problem of transforming a given sequential implementation of a data structure into a wait-free concurrent implementation. Given the code for different operations of an object that is designed to work under the assumption that only a single process accesses it, we want to construct an implementation that works correctly in a concurrent environment where it may be accessed by many processes. We assume a shared memory model with atomic registers. It is well known that using atomic registers it is impossible to construct concurrent implementations of even very simple objects such as test-and-set bits. However, we show that the knowledge about relative speeds of processes can be used for such implementations. We assume that there is a known upper bound on the time taken by the slowest process to execute a statement involving an access to the shared memory. This timing assumption is very powerful and enables us to construct fast wait-free implementations of data structures such as queues, stacks and synchronization primitives such as test-and-set, compare-and-swap, fetch-and-add, etc. Our transformation works only when the given sequential implementation is bounded, that is, there is a known upper bound on the number of steps required to complete any of the operations it supports. In the absence of contention, it guarantees that there is only a small overhead in the cost of executing the concurrent operations over the sequential ones, namely, only a constant number of accesses to the shared memory.<<ETX>>
[1]
N. Lynch,et al.
Timing-based mutual exclusion
,
1992,
[1992] Proceedings Real-Time Systems Symposium.
[2]
Maurice Herlihy,et al.
Wait-free synchronization
,
1991,
TOPL.
[3]
Serge A. Plotkin.
Sticky bits and universality of consensus
,
1989,
PODC '89.
[4]
Leslie Lamport,et al.
A fast mutual exclusion algorithm
,
1987,
TOCS.
[5]
Michel Raynal,et al.
Algorithms for mutual exclusion
,
1986
.
[6]
J. Burns.
Mutual exclusion with linear waiting using binary shared variables
,
1978,
SIGA.
[7]
G. Taubenfeld,et al.
Results about fast mutual exclusion
,
1992,
[1992] Proceedings Real-Time Systems Symposium.
[8]
Manhoi Choy,et al.
Adaptive solutions to the mutual exclusion problem
,
1993,
PODC '93.
[9]
Edsger W. Dijkstra,et al.
Solution of a problem in concurrent programming control
,
1965,
CACM.
[10]
Michael Merritt,et al.
Speeding Lamport's Fast Mutual Exclusion Algorithm
,
1993,
Inf. Process. Lett..
[11]
Maurice Herlihy,et al.
A methodology for implementing highly concurrent data structures
,
1990,
PPOPP '90.