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