2 つのスレッド (T1、T2) が共有する変数 A、B、および C があるとします。
私は次のコードを持っています:
//T1
//~~
A = 1;
B = 1;
C = 1;
InterlockedExchange(ref Foo, 1);
//T2 (executes AFTER T1 calls InterlockedExchange)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
InterlockedExchange(ref Bar, 1);
WriteLine(A);
WriteLine(B);
WriteLine(C);
質問:
T1 と T2 で InterlockedExchange (暗黙的なフル フェンス) を呼び出すと、T2 がフェンスの前に T1 によって行われた書き込みを「見る」ことが保証されますか? (A、B、および C 変数)、これらの変数はFooおよびBarと同じキャッシュラインに配置されていませんが?