Начиная с Java 5, ключевое слово volatile
имеет семантику выпуска / получения, чтобы -эффекты, видимые для других потоков (включая присвоение энергонезависимым переменным!). Возьмите эти две переменные, например:
int i;
volatile int v;
Обратите внимание, что i
является обычным, энергонезависимым Представьте, что поток 1 выполняет следующие операторы:
i = 42;
v = 0;
В некоторый более поздний момент времени поток 2 выполняет следующие операторы:
int some_local_variable = v;
print(i);
Согласно модели памяти Java, запись [111381] 40] v в потоке 1 с последующим чтением v
в потоке 2 гарантирует, что поток 2 увидит запись в i
, выполняемую в потоке 1, поэтому печатается значение 42 .
Мой вопрос: имеет ли volatile
такую же семантику выпуска / получения в C #?