Мне не удалось найти ссылку на это в документации ...
Является ли присвоение double (или любого другого простого типа, включая логический) атомарной операцией, рассматриваемой с точки зрения потоков?
double value = 0;
public void First() {
while(true) {
value = (new Random()).NextDouble();
}
}
public void Second() {
while(true) {
Console.WriteLine(value);
}
}
В этом примере кода первый метод вызывается в одном потоке, а второй - в другом. Может ли второй метод получить испорченное значение, если он получит свое выполнение во время присваивания переменной в другом потоке?
Мне все равно, получу ли я старое значение, важно только получить действительное значение (а не то, где установлены 2 из 8 байтов). Я знаю, что это глупый вопрос, но я хочу быть уверенным, потому что я не знаю, как CLR на самом деле устанавливает переменные.