【发布时间】:2016-11-05 01:58:25
【问题描述】:
在 C# 中,我们知道 bool 是原子的 - 那么为什么将其标记为 volatile 是有效的?两者有什么区别,什么是好的(甚至实用的)用例?
bool _isPending;
对比
volatile bool _isPending; // Is this realistic, or insanity?
我已经阅读了here 和here,我正在努力确保我完全理解这两者的内部工作原理。我想了解什么时候使用一个与另一个比较合适,或者仅bool 是否足够。
【问题讨论】:
-
我很确定对于每个
volatile bool用例,都存在另一个更优化的解决方案。所以理论上bool就足够了。 -
理论上,理论和实践没有区别。但实际上确实如此。
-
@Tdorno 事实并非如此。 volatile bool 是安全发布数据的最便宜和最快的方法(最简单的示例是退出标志)。
-
@vmatm 仅当环境中某处存在错误时。在这种情况下,两个版本在理论和实践上存在巨大差异
-
@Voo 你能说得更具体点吗?可能是一些文章或博客文章或 MDSN?
标签: c# multithreading boolean atomic volatile