JMM内存屏障
2020-10-26 19:27:22 0 举报
JMM内存屏障
作者其他创作
大纲/内容
storebuffer
mesi 多核CPU下面的缓存一致性
T1
cache
a = 0 ,b = 0
1.有了mesi 为什么还有可见性问题 因为cpu之间还有一个storebuffer,它和cache之间是一个异步的操作,会导致cache之间没有立马到达可见性(线程间的上下文切换)2.为什么要有storebuffer 如果每次一个core更新数据到自己的cache还要同步更新到其他cache 性能就下去了,折中处理 定义了一个storebuffer3.什么是内存屏障为了静止指令重排,
1、t1对a 进行修改 a=2,进行异步共享数据到storebuffer中2、由于t2已经在cache缓存了a,他会直接从t2的cache获取a3、内存级别指令重排,t1处于半执行,导致t2获取的数据不是最新的
主内存线程的工作区间 ---- jvm角度 私有的栈 ;os角度 cpu的cache内存 -----jvm角度 堆/方法区 ;os角度 内存条
core2
异步处理
T2
cacahe
core1
收藏
0 条评论
下一页