-
観測される実行順序とプログラムの実行順序(Program Order)が等しい
- (各スレッドごと) 命令O1→O2の順序が入れ替わらない
-
命令は1回づつ、順番に行われる (ように見える)
- 並行に起こるように見えることがない。例えば、write(x = -7)とwrite(x = +3)をした結果、前者の符号部分の書き込み後に後者の値部分が行われて、write(-3)となることがない。
-
一般的な非同期実行
-
- スレッド間の操作は、実時間に関係なく入れ替わりうる
-
Composabilityを満たさない
- 複数のオブジェクトに対する操作同士の順序反転は起こる
- 複数のオブジェクトに対するR/Wは、非同期実行の環境下において古いデータに基づいた読み書きを行うこととなり、正しく動作しない
-
書き込みについてはLinearizabilityと一緒だが、読み込みはLinearizableにならない
- 読み込みの最新性が保証されない
-
Multiprocessor Programmingの文脈で、コンピュータのメモリは一般的にSequential Consistencyを提供することが多い
-
Sequential ConsistencyはNon-blockingで実現できる
-
単一のオブジェクトについて、Sequential ConsistencyとLinearizabilityは見分けることができない
- 誰も、Real-time orderを知らないから (神の視点がないので)