MESI

举个例子

线程A启动区查看initflag的值

线程B去修改它

显然B修改完成后A不可见

 

 +Volatile可见性实现原理

  汇编加lock前缀指令,通过锁定变量缓存行。

 缓存一致性协议MESI

M:已修改

E:独占

S:共享

I:已失效

 

 线程A变量标记E

通过总线嗅探机制

A的E变成S

B将变量标记S  修改将S变成M状态

然后发送总线消息将其他CPU变量标记为I

写回主内存,发送消息

 

posted @ 2020-08-15 17:03  Muusa  阅读(71)  评论(0)    收藏  举报