Я читал эту статью о энергозависимых полях в C #.
using System;
using System.Threading;
class Test
{
public static int result;
public static volatile bool finished;
static void Thread2() {
result = 143;
finished = true;
}
static void Main() {
finished = false;
// Run Thread2() in a new thread
new Thread(new ThreadStart(Thread2)).Start();
// Wait for Thread2 to signal that it has a result by setting
// finished to true.
for (;;) {
if (finished) {
Console.WriteLine("result = {0}", result);
return;
}
}
}
}
Как вы можете видеть, в главном потоке есть цикл, который ожидает установки флага энергозависимости, чтобы вывести «результат», который присваивается 143, прежде чем флаг будет установлен. В объяснении говорится, что если флаг не был объявлен как volatie, то
было бы допустимо для магазина
чтобы быть видимым для основного
нить после магазина до конца
Я что-то здесь упустил? Даже если она не была изменчивой, программа получит распечатку 0.