底层实现主要是通过汇编lock前缀指令,它会锁定这块内存区域的缓存(缓存行锁定),并写会到主内存
IA-32和Intel64架构开发者手册对lock指令的解释:
1)会将当前处理器缓存行的数据立即回写到系统内存
2)这个写回内存的操作会引起在其他cpu里缓存了该内存地址的数据无效(MESI协议),所以数据要回主内存读取
3)提供内存屏障功能,使lock前后指令不能重排序
volatile缓存可见性实现原理
原文:https://www.cnblogs.com/gao1991/p/14780755.html