2

揮発性変数が「メイン」メモリから効果的にアクセスする方法について少し混乱しています。ローカルコピーを持つ変数(不揮発性)とはどう違うのですか?複数のスレッドが不揮発性変数と揮発性変数にアクセスするときの典型的なワークフローは何ですか?つまり、彼らは舞台裏でどのように機能するのでしょうか?

4

1 に答える 1

5

複数のスレッドからアクセスできる変数があるとします。

スレッド1は変数を調べます。共有メモリを調べることはスレッドローカルメモリよりも高価であるため、変数のコピーを作成します。(オブジェクトはコピーされず、その参照のみがコピーされることに注意してください。)

スレッド2は同じ変数を調べます。変数を変更することにしました。しかし、スレッド1はそれを知りません!スレッド1はまだ古いデータを使用しています。これは非常に悪いことです。これを作成することによりvolatile、各スレッドはアクセス時に元の変数を確認する必要があります。ローカルコピーを作成することは許可されていないため、古くなることはありません。

于 2012-08-04T15:14:20.270 に答える