JLSから2つの結論があります。
- C1:プログラムにデータ競合がない場合、プログラムのすべての実行は逐次一貫性があるように見えます。
data-race-free => sequentially consistent
- C2:プログラムが正しく同期されている場合、プログラムのすべての実行は順次一貫しているように見えます。
correctly synchronized => sequentially consistent
C1の逆が真である場合、次のように結論付けることができます。
- C3:プログラムが正しく同期されている場合、データの競合は発生しません。
correctly synchronized => data-race-free
しかし、残念ながら、JLSにはそのようなステートメントがないため、4番目の結論に到達します。
- C4:プログラムは正しく同期され、データの競合が発生する可能性があります。
しかし、私はこのアプローチに満足しておらず、非公式な方法でもサンプル的な方法でも、この結論が正しい(または間違っている)という証拠を入手したいと思います。
まず、データ競合を含むマルチスレッドプログラムの逐次一貫性のある実行を示すコードセグメントは、この問題を理解して解決するのに役立つと思います。
真剣に検討した結果、まだ適切なサンプルが見つかりません。では、そのようなコードセグメントを教えていただけませんか。