我已经阅读了有关 x64 上的内存排序的英特尔文档:http: //www.multicoreinfo.com/research/papers/2008/damp08-intel64.pdf。他们说锁定指令会导致完全障碍,从而使处理器可以看到例如指定的更新命令。但是,障碍引起的能见度并没有什么。障碍是否会导致其他处理器将立即看到变量的更新,或者更新可能只会以指定的顺序传播到其他处理器但没有指定的时间?
例如
线程1:
flag = true;
MemoryBarrier();
线程 2:
MemoryBarrier();
tmp = flag;
如果线程 1 将在线程 2 之前执行其代码,线程 2 是否总是 flag=true?