Linearizability: a correctness condition for concurrent objects
- 1 July 1990
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 12 (3) , 463-492
- https://doi.org/10.1145/78969.78972
Abstract
A concurrent object is a data object shared by concurrent processes. Linearizability is a correctness condition for concurrent objects that exploits the semantics of abstract data types. It permits a high degree of concurrency, yet it permits programmers to specify and reason about concurrent objects using known techniques from the sequential domain. Linearizability provides the illusion that each operation applied by concurrent processes takes effect instantaneously at some point between its invocation and its response, implying that the meaning of a concurrent object's operations can be given by pre- and post-conditions. This paper defines linearizability, compares it to other correctness conditions, presents and demonstrates a method for proving the correctness of implementations, and shows how to reason about concurrent objects, given they are linearizable.Keywords
This publication has 29 references indexed in Scilit:
- Local atomicity properties: modular concurrency control for abstract data typesACM Transactions on Programming Languages and Systems, 1989
- Dynamic quorum adjustment for partitioned dataACM Transactions on Database Systems, 1987
- Specifying Concurrent Program ModulesACM Transactions on Programming Languages and Systems, 1983
- Implementing atomic actions on decentralized dataACM Transactions on Computer Systems, 1983
- Proving Liveness Properties of Concurrent ProgramsACM Transactions on Programming Languages and Systems, 1982
- Efficient locking for concurrent operations on B-treesACM Transactions on Database Systems, 1981
- A Proof System for Communicating Sequential ProcessesACM Transactions on Programming Languages and Systems, 1980
- The notions of consistency and predicate locks in a database systemCommunications of the ACM, 1976
- Verifying properties of parallel programsCommunications of the ACM, 1976
- MonitorsCommunications of the ACM, 1974