例如,我们使用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)
如果是,则似乎违反了内存屏障的规定
非常感谢您