скажем, у меня есть переменные A, B и C, которые разделяют два потока (T1, T2).
у меня есть следующий код:
//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);
Вопрос:
вызывает ли вызов InterlockedExchange (неявное полное ограничение) на T1 и T2 уверенность в том, что T2 "увидит" запись, выполненную T1 до ограничения? (переменные A, B и C), даже если эти переменные не находятся в той же строке кэша, что и Foo и Bar?