-
既然CPU有缓存一致性协议(MESI),为什么JMM还需要volatile关键字?
🧠 为什么 MESI 协议并不足以保证 Java 中的“可见性”语义? 1. MESI 是硬件层级的缓存一致性,volatile 是语言层级的可见性保证 MESI 主要解决“同一物理地址在多核缓存中的副本一致性问题”; 根据MESI,CPU某核(假设CPU0)的缓存行(包含变量x)是M S 或E的时候,如果总线嗅探到了变量x被其其他核(比如CPU1)执行了写操作(remote write)那么CP…- 44
- 0