Linearizability
Linearizability is a correctness condition for concurrent objects in distributed systems. It requires that each operation appears to take effect instantaneously at some point between its invocation and its response, and that the order of non-overlapping operations reflects real time.
Introduced by Maurice Herlihy and Jeannette Wing in 1990, linearizability is defined in terms of histories
Linearizability is stronger than sequential consistency, which only requires that the result be consistent with some
In practice, the linearization point may be at the invocation, the response, or somewhere in between, and
Common linearizable data structures include atomic queues, stacks, and counters implemented with synchronization primitives such as
In distributed environments with failures or clock skew, achieving linearizability requires careful design, and developers may