如何保证记忆屏障的语义?

时间:2019-02-22 19:20:46

标签: memory-barriers

例如,我们使用StoreLoad内存屏障,而在x86中,lock addl $0x0,(%rsp) ;代表StoreLoad内存屏障。 众所周知,Store1;StoreLoad;Load2保证在Load2之前将Store1数据刷新到主存储器中

一个线程执行Store1过程,伪代码如下:

write to local copy of variable A
lock addl $0x0,(%rsp)

另一个线程执行Load2过程,伪代码如下:

load variable A

最终执行顺序可以如下吗?

write to local copy of variable A
load variable  A
lock addl $0x0,(%rsp)

如果是,则似乎违反了内存屏障的规定

非常感谢您

0 个答案:

没有答案