- 2
- 0
- 约2.27千字
- 约 6页
- 2026-05-22 发布于北京
- 举报
volatile的可见性是如何实现的,以及如何指令重排序
《深入理解JAVA虚拟机》中有如下描述:
“观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,
会多出一个lock前缀指令”
lock前缀指令实际上相当于一个内存屏障(也称内存栅栏),内存屏障会3个功能:
1.它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存
屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成;2.它会强制将对缓存
的修改操作立即写入主存;3.如果是写操作,它会导致其他CPU中对应的缓存行无效。
所以可见性和指令重排序如下:
可见性:
volatile的功能就是被修饰的变量在被修改后可以立即同步到主内存,被修饰的变量在每次使用之
前都从主内存刷新。本质也是通过内存屏障来实现可见性。写内存屏障(StoreMemoryBarrier)可
以促使处理器将当前storebuffer(缓存)的值写回主存。读内存屏障(LoadMemory
Barrier)可以促使处理器处理invalidatequeu
您可能关注的文档
最近下载
- 复旦大学2020-2021学年第2学期《数据结构》期末考试试卷(B卷)含标准答案.docx
- 领健口腔OPENAPI接口文档-客户版V5.27.pdf VIP
- 关于学校科级机构设置和确定工作职责的通知.doc VIP
- 水利建设项目经济评价规范(2025版).docx
- ISO14001环境管理体系培训教程.pptx VIP
- 备课素材:简易流动镶嵌模型新学具的制作和使用-高一上学期生物人教版必修1.docx VIP
- 2022北京通州区初二期末(下)物理试卷及答案.docx VIP
- 地理教学过程设计.ppt VIP
- 八年级下册古诗文大单元整合式鉴赏教学设计.docx VIP
- ISO14001环境管理体系 .pptx VIP
原创力文档

文档评论(0)