【发布时间】:2012-03-08 08:25:43
【问题描述】:
我明白为什么需要内存屏障,但我不明白单处理器的情况。
即使我使用 UP,我也必须处理障碍吗?每个文档都用 SMP 而不是 UP 来解释它们。
在下面的代码中,r2 == 0在a点有没有可能?
// the location 0xdeadbeef has a zero initial value
ldr r0, =0xdeadbeef
ldr r1, =0xdeadbeef
ldr r2, =1
str r2, [r0]
ldr r2, [r1]
// point a
【问题讨论】:
-
可能与超标量乱序单处理器相关。它确实应该由处理器的内存模型和指令集指定。 (邪恶在细节中)。
-
@Basile:我不这么认为——铁律是在单个处理器上执行单个线程总是会产生以下影响。
标签: concurrency atomic memory-barriers