Linearizability is a correctness condition for concurrent objects, defined by Maurice Herlihy and Jeannette Wing in their 1990 ACM Transactions on Programming Languages and Systems paper “Linearizability: A Correctness Condition for Concurrent Objects.” An execution is linearizable if each operation appears to take effect instantaneously at some single point between the moment it is invoked and the moment it returns, and if that order of effects is consistent with the real-time order in which the operations actually happened.
The practical payoff is that programmers can reason about a concurrent or distributed object as if it were a single sequential object accessed one operation at a time. Herlihy and Wing show that linearizability is a local property: a system made of linearizable objects is itself linearizable, which lets correctness be established object by object rather than for the whole system at once.
Because effects must respect real time, once one client observes a write, every later operation that begins afterward must also observe it. As the Jepsen consistency reference describes, this makes linearizability one of the strongest single-object models, and the gold standard for systems that need to be easy to reason about, since there is never a stale or out-of-order read to account for.
That strength has a cost. Maintaining real-time order across replicas requires coordination, which adds latency, and a linearizable system cannot remain fully available during a network partition. This is the trade-off later formalized by the CAP theorem, and it is why many large-scale systems deliberately relax linearizability in favor of weaker models such as causal or eventual consistency.