volatile
キーワードには、副作用を他のスレッドに表示するためのセマンティクスがリリース/取得されています(の変数を含む)。変数! i
は定期的に、非揮発性の変数であることをリリース/獲得セマンティクスを持つvolatile
int i;
volatile int v;
注:例えば、これらの2つの変数を、取ります。次の文実行中のスレッド1を想像してみて:Javaのメモリモデル、スレッド1でv
の書き込みによると
int some_local_variable = v;
print(i);
:時間内にいくつかの後の時点で
i = 42;
v = 0;
を、スレッド2は、次のステートメントを実行します続いてスレッド2のv
を読み取ると、スレッド2はスレッド1で実行されたi
への書き込みを認識し、値42が出力されます。
私の質問は:volatile
はC#で同じリリース/獲得セマンティクスを持っていますか?
正確ではありません。 http://blogs.msdn.com/b/ericlippert/archive/2011/06/16/atomicity-volatility-and-immutability-are-different-part-three.aspxを参照してください。 –