 
Summary: How to share a data structure:
A fast timingbased solution \Lambda
Rajeev Alur y Gadi Taubenfeld z
March 5, 1997
Abstract
We consider the problem of transforming a given sequential implementation of a data
structure into a waitfree concurrent implementation. Given the code for different op
erations of a data structure 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,
in asynchronous systems, using atomic read/write registers only, it is impossible to
construct concurrent implementations of even very simple objects such as testandset
bits. 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
waitfree implementations of data structures such as queues, stacks and synchronization
primitives such as testandset, compareandswap, fetchandadd, etc.
Our transformation works only when the given sequential implementation is bounded,
