- Cpu2 读取(read)到主内存中的变量
v=0
,并将其载入(load)工作内存中存为变量副本,线程2执行引擎使用(use)该变量副本,此时通过总线嗅探机制来监听主内存中v的变化。 - Cpu1 读取(read)到主内存中的变量
v=0
,并将其载入(load)工作内存中存为变量副本,线程1执行引擎使用(use)该变量副本,然后赋值(assign)v=1
。 - 由于变量v加了volatile关键字修饰,会在存储(store)之前加锁(lock),然后通过总线,将变量
v=1
写入主内存,解除锁定。 - 由于v的值发生了改变,并且通过了消息总线,Cpu2 通过总线嗅探机制发现v的值改变了,就会将 Cpu2 工作内存中的变量
v=0
置为无效状态,当使用(use)该变量时,发现没有这个值,就会冲新区主内存中读取数据,此时读取到的数据就是v=1
。
图解volatile 工作原理
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...