我想知道这是否是完全线程安全的,以及是否应该使用 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 关键字是必需的,因为这样就不可能将值缓存在寄存器或类似的优化中。
最佳答案
当然,SLaks 的回答是正确的,但要回答您的问题:在两个方面都是肯定的:它是安全的,应该声明为 volatile。
关于c# - 这个(volatile bool)总是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779385/