Java 5 以降、volatile
キーワードにはリリース/取得セマンティクスがあり、副作用を他のスレッドから見えるようにします (非揮発性変数への代入を含む!)。たとえば、次の 2 つの変数を使用します。
int i;
volatile int v;
i
は通常の非揮発性変数であることに注意してください。次のステートメントを実行するスレッド 1 を想像してください。
i = 42;
v = 0;
その後、スレッド 2 は次のステートメントを実行します。
int some_local_variable = v;
print(i);
Java メモリ モデルによると、v
スレッド 1 での書き込みとそれに続くスレッド 2 での読み取りによりv
、スレッド 2 はi
スレッド 1 で実行された書き込みを認識できるため、値 42 が出力されます。
私の質問はvolatile
、C# で同じリリース/取得セマンティクスを持っていますか?