弱一貫性

弱一貫性（じゃくいっかんせい）という用語は、2つの意味で使われる。厳密でより一般的な第一の意味では、コンカレントプログラミングの領域（分散共有メモリ、分散トランザクションなど）で使用される一貫性モデルの一つである。2つ目は、より一般的な意味での弱一貫性です。弱一貫性は、逐次一貫性よりも弱い一貫性モデルに適用することができる。

同時更新を行わないシステムにおける弱一貫性モデルには結果整合性（結果一貫性）を含む。これは、どの更新も非常に長い時間がかかる場合、すべてのレプリカが最終的に一貫性を持つようになることを定義している。

プロトコルは以下の場合に弱一貫性をサポートすると言われている。

 同期変数へのすべてのアクセスは、すべてのプロセス（またはノード、プロセッサ）から同じ順序（シーケンシャル）で見られる（これらは同期操作である）。クリティカルセクションへのアクセスは順次行われる。
 その他のアクセスは、プロセス（またはノード、プロセッサ）ごとに異なる順序で見られる。
 異なる同期操作の間にある読み取りと書き込みの両方の操作のセットは、各プロセスで同じです。

したがって保留中の書き込み操作がある場合は、同期変数へのアクセスはできない。またシステムが何らかの同期操作を行っている場合、新たな読み書き操作を開始することはできない。

より厳密な条件は強い一貫性であり、並列プロセスは1つの一貫した状態しか観察できない。

脚注

参考資料
 The original paper on weak ordering: M. Dubois, C. Scheurich and F. A. Briggs, Memory Access Buffering in Multiprocessors, in Proceedings of 13th Annual International Symposium on Computer Architecture 14, 2 (June 1986), 434-442.
 Sarita V. Adve, Mark D. Hill, Weak ordering - a new definition, in Proceedings of the 17th Annual International Symposium on Computer Architecture.

関連項目
一貫性モデル (ソフトウェア)
結果整合性
線形化可能性
直列化可能性
逐次一貫性
プロセッサ一貫性
リリース一貫性
強一貫性

トランザクション処理
並行性制御