【发布时间】:2018-04-04 12:13:32
【问题描述】:
我想知道在像这样的特定情况下,我们是否有 bool 标志来指示某些服务是否可用:
private bool isAvailable;
private void foo()
{
if(isAvailable)
{
isAvailable = false;
DoSomething();
isAvailable = true;
}
}
在多线程环境中将 bool 字段设置为 volatile 就足够了,还是使用锁甚至监视器更好。
在这种特定情况下,如果该服务目前不可用,则无需等待它再次可用。
【问题讨论】:
-
该操作不是原子的,因此使 bool volatile 无济于事。
标签: c# .net multithreading thread-safety