Memory Model
メモリモデルは、スレッドをまたぐ読み書きの可視性と順序の保証を定義するものであり、並行処理の正しさの基礎である。
目的
マルチスレッド下でのメモリ操作の並べ替えと可視性の規則を理解し、正しい並行コードを書く。
メカニズム
逐次一貫性(SC)では、すべてのスレッドが単一の統一順序を観測する。取得解放(acquire-release)では、解放より前の書き込みが取得より後に可視になる。緩和(relaxed)は原子性のみ保証し、順序は保証しない。Java/JS/C++ はそれぞれ独自のメモリモデルを規定している。
ユースケース
- 並行プログラミング
- ロックフリーアルゴリズム
- プログラミング言語の仕様