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

本文关键字:缓存 更新 线程 关键字 是否 确保 volatile | 更新日期: 2023-09-27 18:15:43

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

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

还有,有没有更好的方法在所有线程上强制缓存更新?

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

可以,参见http://igoro.com/archive/volatile-keyword-in-c-memory-model-explained/

Volatile read:之前刷新线程缓存-是,之后刷新线程缓存-否

Volatile write:刷新线程缓存前-否,刷新线程缓存后-是

同一作者的更多相关阅读(强烈推荐):c#内存模型的理论与实践,c#内存模型的理论与实践2