Мне интересно, полностью ли это потокобезопасно, и должно ли ключевое слово volatile быть на месте.
using System.Threading;
class Program
{
private static volatile bool _restart = true;
private static void Main()
{
while (_restart)
{
// Do stuff here every time for as long as _restart is true
Thread.Sleep(1);
}
}
private static void SomeOtherThread()
{
Thread.Sleep(1000);
_restart = false;
}
}
Я думаю, что это так, но я хочу дважды проверить, так как я не на 100% уверен, что я просто хочу быть уверенным.
Я думаю, что ключевое слово volatile требуется, потому что тогда никогда не будет возможно кэшировать значение в регистре или аналогичные оптимизации.