我们知道,线程之间的可见性能用volatile关键字来解决,那么它为什么能解决呢?
可见性问题的产生
CPU的高速缓存

可见性问题!!
当多个线程并行执行一个共享数据时,都同时在本cpu的高速缓存中的时候,最新的数据对其他的cpu是不可见的!!所以CPU又引入了总线锁与缓存锁
总线锁和缓存锁
缓存锁引入了缓存一致性协议来保证,有MSI,MESI.MOSI等等!
CPU为何要有高速缓存
CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。
带有高速缓存的CPU执行计算的流程:
- 程序以及数据被加载到主内存
- 指令和数据被加载到CPU的高速缓存
- CPU执行指令,把结果写到高速缓存
- 高速缓存中的数据写回主内存
CPU缓存一致性协议MESI
协议动态演示地址
具体的细节动态图里有详细体现,比我在这哔哔哔半天有用的多
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204030.html原文链接:https://javaforall.net
