举个例子
线程A启动区查看initflag的值
线程B去修改它
显然B修改完成后A不可见
+Volatile可见性实现原理
汇编加lock前缀指令,通过锁定变量缓存行。
缓存一致性协议MESI
M:已修改
E:独占
S:共享
I:已失效
线程A变量标记E
通过总线嗅探机制
A的E变成S
B将变量标记S 修改将S变成M状态
然后发送总线消息将其他CPU变量标记为I
写回主内存,发送消息