このアルゴリズムが壊れます。これに関して述べていることがいくつかあります。読み込んだスレッドは書き込みを見ることが保証されます。フィールドアクセスに対して完全な順序付けを持つ。この順序付けはプログラム順序と一貫性があります。アクセスはすべてのスレッドにプログラム順序で見えることが保証されます。つのスレッドが「クリティカルな処理」を同時に実行することは、決してありません。データ競合が起きます。データ競合が起きないプログラムは逐次一貫性のあるマシンで実行されたかのように振る舞わねばならないことになっています。このコードは逐次一貫性のある方法によって実行されなければなりません。つの操作の間には書き込み/読み込みバリアを入れる必要があります。以下のような感じになるでしょう。読み込みは、単なる取得読み込みです。書き込み後の書き込み/読み込みバリアが追加されています。ここで実際に保証しようとしていることは何でしょうか。書き込みが見えるようにすることです。書き込み側にバリアを張った方が有利なのです。明示的な書き込み/読み込みバリアを省略できる場合があります。アトミック操作によってフルバリアが張られます。明示的にバリアを張る必要があります。)参考文献より深くあるいはより幅広く扱っているウェブページやドキュメントを挙げておきます。一般的に役立つ記事がリストの上に来るように並べています。メモリ一貫性モデルに深く踏み込みたいなら、始めるには良い場所です。Barriers本問題を要約したなかなか良い短い記事です。使ったマルチスレッドプログラミングの入門です。データ競合や基本的な同期の方法について非常に良く論じられています。この本は幅広いトピックを詳細にカバーしています。マルチスレッドコードを書くすべての人に強くオススメできます。メモリモデルの丁寧な紹介です。フィールドの構築についても含まれています。パッケージのドキュメントです。様々なクラスが行う保証について説明しています。スレッドセーフな構築のためのガイドラインを提示しています。フィールドを用いて出来ることと出来ないことを説明した良い記事です。様々な観点から詳細に説明しています。ついて書かれています。コード片を用いて説明しています。これを読んでください。ための命令についても説明しています。カーネルのメモリバリアのドキュメントです。アートが載っています。アトミック操作機能の標準規格のドラフトです。アトミック操作機能の標準規格のドラフトです。エラッタも参照してください。algorithm平行プログラミングにおける相互排他問題について、知られている限り最初の正しい解法です。ハードウェアで動かすためにはどう修正すればいいのかも議論されています。アドレス依存と制御依存のなかなか良い要約が含まれています。キャッシュについての、非常に長い詳細な記事です。よって書かれた論文です。メモリモデルを正確に、しかしわかりやすく説明しようとしています。本ドキュメントで用いている「可視性」の定義は、この論文から取りました。考えるには良い材料です。Code正確な数学形式での説明が好みなら、次に行く場所はここが良いでしょう。