重複の可能性:
揮発性vs.インターロックvs.ロック
volatileキーワードとInterlockedを使用したい状況を理解しようとしています。
そのオブジェクトからの読み取りと書き込みがすべてInterlocked.Exchangeを介して行われる変数がある場合、それはその変数を揮発性としてマークすることと本質的に同じことですか?
private object _threadSafe;
private void Test()
{
var tmp = new object();
Interlocked.Exchange(ref tmp, _threadSafe); //read
Interlocked.Exchange(ref _threadSafe, "hi"); //write
}
これの代わりに、_threadSafeオブジェクトが揮発性としてマークされ、Interlockedを削除した場合、それは機能的に同等でしょうか?(値のインクリメントのように、アトミックな読み取り/インクリメント/書き込みに依存していないと仮定します)。