CPU 已经通过一些协议(如 MESI)保证缓存一致性。为什么我们还需要volatile在某些语言(如java)中保持多线程之间的可见性。
volatile
可能的原因是这些协议在启动时未启用,并且必须由某些指令(例如LOCK.
LOCK
如果确实如此,为什么CPU在启动时不启用该协议?
java cpu caching volatile cpu-cache
caching ×1
cpu ×1
cpu-cache ×1
java ×1
volatile ×1