在C++ 11标准中,机器模型从单线程机器变为多线程机器.
这是否意味着static int x; void func() { x = 0; while (x == 0) {} }优化输出读取的典型示例将不再发生在C++ 11中?
编辑:对于那些不知道这个例子的人(我非常惊讶),请阅读:https://en.wikipedia.org/wiki/Volatile_variable
EDIT2:好的,我真的很期待所有知道volatile这个例子的人.
如果您使用示例中的代码,则循环中读取的变量将被优化,使循环无限.
解决方案当然是使用volatile它会强制编译器在每次访问时读取变量.
我的问题是,如果这是C++ 11中不推荐使用的问题,因为机器模型是多线程的,因此编译器应该考虑对系统中存在的变量的并发访问.
在C/C++中使用volatile关键字有什么用?声明变量volatile与不声明变量之间有什么区别volatile?