我一直在努力围绕这个订购模式以及它如何有用。 This answer个州
不依赖于新加载的值的负载可以重新排序。原子载荷。即如果它们在源代码中的原子加载之后,它们将在原子加载之后发生。
然而,这对我来说没有任何意义,因为如果第一个原子载荷没有读入值,就不可能执行后面的加载。 This post提供了一致性模型的良好概述,并指出ARM和Power体系结构具有弱排序模型,除了它们强制执行数据依赖性排序。
这是否意味着除了Alpha之外,每个主要架构中的consume_memory_order都没用?
如果没有,那么给出下面的例子,指令的重新排序内容和位置在哪里?
ldr r1, [r0]
ldr r7, [r0]
str r2, [r0]
ldr r3, [r1]
str r7, [r3]
ldr r4, [r3]