2. 2 はじめに • あるスレッドが、変数aVariableに値を代入 aVariable = 3; • 通常なら他のスレッドは問題なく aVariable=3 として値が見れる。 ※ただし、正しく同期化されている場合のみ。 • 逆に同期化されていないと次のような問題が発生 3. 3 メモリやプロセッサの問題 • コンパイラがソースコードに書かれている常識的な順序でない順序で命令を作り だす。 • 変数をメモリではなくプロセッサのレジスタに保存する。 • プロセッサが複数の命令を平行に実行したり、コンパイラが作ったコードとは違 う順序で命令を実行する。 • キャッシュの介在によって、変数への書き込みが主記憶にコミットされる順序が 変わる。 • プロセッサローカルなキャッシュに保存された値が他のプロセッサから見えない ことがある。 5. 5 メモリモデルの課題 • 共有メモリを使うマルチプ