- [[Consistency]]のレベルの一つ - 読み取りの最新性が保証されている - あるオブジェクトに対する並行操作は、何らかの逐次的な順序([[Real-time Order]])で実行されたものとみなせる + 操作の開始から完了までの何処かの一瞬で実行されたとみなせる - その瞬間のことを、[[Linearization point]]という - [[Lock]]ベースの実装の場合、クリティカルセクションがLinearization point - Lockを使わない実装の場合、メソッド呼び出しの結果が他から見えるようになる時点がLinearization point - 同期実行であり、同一スレッド内での操作順の反転も発生しないという保証 - [[Quiescent Consistency]], [[Sequential Consistency]]の両方を満たしている - 操作に[[全順序関係]]がある - [[SMR]], [[Total Order Broadcast]]はLinearizableだと思われ? (kekeho) - [[Composability]]を満たす - [[Real-time Order]]を満たす - 単一のオブジェクトについて、[[Sequential Consistency]]と[[Linearizability]]は外部から見分けることができない - こうした理由から、[[External Consistency]]と呼ばれることも - Linearizabilityチェッカー: プログラムが線形化可能か調べることができるツール - [[NP Complete]]な問題であることが知られている - 全てのLinearization pointが与えられたとき、それが有効かどうかは多項式時間でチェックできる - [[Subset Sum Problem]]をLinearizabilityチェック問題に還元できる([解説](https://anishathalye.com/testing-distributed-systems-for-linearizability/)) - [[Porcupine]] 参考 - [https://muratbuffalo.blogspot.com/2024/08/linearizability-correctness-condition.html](https://muratbuffalo.blogspot.com/2024/08/linearizability-correctness-condition.html) - [nikezono/Linearizability](https://scrapbox.io/nikezono/Linearizability) - http://www.bailis.org/blog/linearizability-versus-serializability/ - [[Linearizability a correctness condition for concurrent objects]]