多线程环境下内存缓存及总线嗅探机制
2022-02-10 17:59:43 0 举报
多线程、内存缓存、CPU总线嗅探机制、JMM
作者其他创作
大纲/内容
flag = true
lock
read,重新读取flag=true
CPU
CPU总线嗅探机制(监听)
flag = false
使用volatile关键字,会在store命令之前给主内存的变量flag加锁。使其他线程在通过CPU总线嗅探机制发现数据发生改变时,不会先一步拿到主内存之前的数据。数据成功写入主内存时,会解锁(unlock)。相比较直接总线加锁,粒度更细,几乎不影响性能。
store
use
2.线程A监听flag是否改变
主内存
assign
read
write
2.线程B将flag=true写回主内存
load
1.线程A先读取flag=false
1.线程B先读取flag=false
线程A (执行引擎)
工作内存
总线<MESI缓存一致性协议>
!flag
如果监听到数据改变将之前的值置为失效
这是多核CPU缓存架构图,我们可以结合该图,加深对左侧JMM数据修改过程的理解
unlock
线程B(执行引擎)
0 条评论
下一页