Мне интересно, является ли это полностью потокобезопасным и нужно ли использовать ключевое слово 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 необходимо, потому что в этом случае невозможно будет кэшировать значение в регистрах или проводить подобные оптимизации.