volatile关键字是否确保线程的缓存更新?

时间:2014-07-30 13:42:35

标签: c# thread-safety volatile

我目前正在开发高度并发的应用程序,并且我想知道volatile关键字是否可用于确保所有线程都具有最新值。我只在boolean上使用volatile关键字,我只对它们使用原子操作。例如:

private volatile bool isDisposed;
public void Dispose() {
   isDisposed = true; // Will all threads see that update?
}

此外,是否有更好的方法可以在所有线程上强制执行缓存更新?

1 个答案:

答案 0 :(得分:1)

是的,请参阅http://igoro.com/archive/volatile-keyword-in-c-memory-model-explained/

易失性读取:刷新线程缓存之前 - 是的,刷新线程缓存后 - 否

易失性写入:刷新线程缓存之前 - 否,刷新线程缓存后 - 是

来自同一作者的更多关于主题的读物(强烈推荐): The C# Memory Model in Theory and PracticeThe C# Memory Model in Theory and Practice 2