Linearizability¶
Category: Safety in languages · Status: stub
One line: A concurrent object is linearizable if every operation appears to take effect at a single instant between its start and its end, so it can be reasoned about as if it were sequential.
Also called: atomic consistency, strong consistency.
How it connects¶
flowchart LR
n_linearizability["Linearizability"]
n_sequential_consistency["Sequential consistency"]
n_linearizability ---|vs| n_sequential_consistency
classDef center stroke-width:3px
class n_linearizability center
classDef outside stroke-dasharray: 4 3
class n_sequential_consistency outside
- Often confused with: Sequential consistency
- See also: Consistency models
In each language¶
| Kotlin | Lincheck ↗ runs random concurrent scenarios by stress testing or bounded model checking and checks that the results are linearizable |
Where to read more¶
- In the books: Hands-On Concurrency with Rust, Brian L. Troutwine — ch. 6, 'Atomics – the Primitives of Synchronization' → 'Linearizability'
- In the books: The Art of Multiprocessor Programming, Maurice Herlihy, Nir Shavit — ch. 3, 'Concurrent Objects' → 'Linearizability'
- In the books: Designing Data-Intensive Applications, Martin Kleppmann — ch. 9, 'Consistency and Consensus' → 'Linearizability'
- Reference: Wikipedia: Linearizability ↗