【发布时间】:2018-07-29 01:21:50
【问题描述】:
我已阅读 this 和 this 的答案。我还搜索了C++ Concurrency in Action 这本书,发现没有关于volatile 的讨论,也没有任何使用它的示例。看起来它根本不是为并发而设计的。那么对于并发编程,只使用 atomic、mutex 等就足够了,而忘记了volatile?并发问题可能需要volatile 的任何情况?
【问题讨论】:
-
不,没有—— volatile 更多地是为处理内存映射硬件寄存器等事情而设计的。对于并发编程,它根本不是适合这项工作的工具。
-
没有提到它是有原因的,这与没有提到海盗船和香蕉和维特根斯坦的 Tractatus 的原因是一样的。
-
@nolbdnilo Arrrr!
-
这个问题已经在 SO 上被问及回答了很多。问题是,一些竖起大拇指的绿色复选标记答案是错误的。简短的回答是,如果您没有与内存映射硬件接口,请忘记您曾经听说过
volatile。你不记得你知道的不会伤害你。
标签: c++ c++11 concurrency volatile