volatile 关键字确保多线程下字段的可见性,使读写直接操作主内存、禁止部分重排序;但不保证原子性,仅适用于简单类型字段的单次读写,不能替代锁或用于复合操作。

volatile 关键字在 C# 中主要用于确保多线程环境下字段的可见性。当一个字段被声明为 volatile,意味着对该字段的读写操作不会被线程本地缓存,所有线程都会直接从主内存中读取或写入该值,从而避免因缓存不一致导致的数据问题。
例如:
isCompleted = true;示例代码:
private volatile bool _shouldStop = false;
<p>// 线程1执行
public void Worker()
{
while (!_shouldStop)
{
// 做一些工作
}
Console.WriteLine("工作结束");
}</p><p>// 线程2调用,通知停止
public void StopWork()
{
_shouldStop = true;
}
在这个例子中,如果不加 volatile,Worker 方法可能永远看不到 _shouldStop 的变化。加上后,就能确保一旦 StopWork 被调用,Worker 线程能尽快感知到状态变更。
count++(读-改-写),这类仍需使用 lock 或 Interlocked 类;基本上就这些,用得不多但关键时候很管用。
以上就是C# volatile关键字的作用 - 保证多线程下的可见性的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号