我目前正在开发高度并发的应用程序,并且我想知道volatile关键字是否可用于确保所有线程都具有最新值。我只在boolean上使用volatile关键字,我只对它们使用原子操作。例如:
private volatile bool isDisposed;
public void Dispose() {
isDisposed = true; // Will all threads see that update?
}
此外,是否有更好的方法可以在所有线程上强制执行缓存更新?
答案 0 :(得分:1)
是的,请参阅http://igoro.com/archive/volatile-keyword-in-c-memory-model-explained/
易失性读取:刷新线程缓存之前 - 是的,刷新线程缓存后 - 否
易失性写入:刷新线程缓存之前 - 否,刷新线程缓存后 - 是
来自同一作者的更多关于主题的读物(强烈推荐): The C# Memory Model in Theory and Practice,The C# Memory Model in Theory and Practice 2