【发布时间】:2018-10-24 11:18:38
【问题描述】:
众所周知,现代 CPU 能够同时执行多个命令:https://en.wikipedia.org/wiki/Out-of-order_execution
因此,我们可能会得到如下事实:
当我们执行c++代码时:x = a + b; y = c + d;,y = c + d;可能会在x = a + b;之前执行。
我的问题是是否可以禁用 CPU 的乱序执行?
【问题讨论】:
-
如果功能相同,有什么区别?
-
请注意,在 CPU 上乱序执行的指令粒度很少会匹配 C++ 等高级语言中的单个语句。另请注意,C++ 编译器本身可能会重新排列语句甚至表达式或表达式的一部分。
-
至于你的问题,为什么你想做这个?您需要解决的真正问题是什么?用例是什么?这看起来很像XY problem。
-
问题是您为什么要这样做?除非出现任何错误,否则 CPU 仅在新顺序不会产生任何可观察到的影响时才允许重新排序执行。编译器还将重新排序执行,并且比 CPU 执行的乱序执行的程度要大得多。
-
@LieRyan 总是有幽灵/崩溃。 :P:P:P
标签: c++