• 観測される実行順序とプログラムの実行順序(Program Order)が等しい

    • (各スレッドごと) 命令O1→O2の順序が入れ替わらない
  • 命令は1回づつ、順番に行われる (ように見える)

    • 並行に起こるように見えることがない。例えば、write(x = -7)とwrite(x = +3)をした結果、前者の符号部分の書き込み後に後者の値部分が行われて、write(-3)となることがない。
  • 一般的な非同期実行

  • Real-time Orderがない

    • スレッド間の操作は、実時間に関係なく入れ替わりうる
  • Composabilityを満たさない

    • 複数のオブジェクトに対する操作同士の順序反転は起こる
    • 複数のオブジェクトに対するR/Wは、非同期実行の環境下において古いデータに基づいた読み書きを行うこととなり、正しく動作しない
  • 書き込みについてはLinearizabilityと一緒だが、読み込みはLinearizableにならない

    • 読み込みの最新性が保証されない
  • Multiprocessor Programmingの文脈で、コンピュータのメモリは一般的にSequential Consistencyを提供することが多い

  • Sequential ConsistencyはNon-blockingで実現できる

  • 単一のオブジェクトについて、Sequential ConsistencyとLinearizabilityは見分けることができない

    • 誰も、Real-time orderを知らないから (神の視点がないので)