news 2026/6/10 18:35:22

volatile

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
volatile

volatile 保证可见性的底层原理(核心)

volatile的可见性并非 “跳过缓存直接读写总线 / 主存”,而是通过两个机制强制缓存同步:

1. 缓存一致性协议(MESI)

CPU 层面的硬件协议(Intel 架构为主),解决多核心缓存同步问题,核心逻辑:

  • 当某个 CPU 核心修改了volatile变量的缓存行(Cache Line),会将该缓存行标记为「已修改(Modified)」;
  • 同时通过「总线嗅探(Bus Snooping)」机制,通知其他核心:该变量的缓存行已失效(Invalid);
  • 其他核心再读取该volatile变量时,发现自己的缓存行失效,会主动丢弃私有缓存的旧值,从主存重新加载最新值。
2. 内存屏障(Memory Barrier)

JVM 层面为volatile变量的读写添加的 “屏障指令”,禁止 CPU 重排序并强制缓存同步:

  • 写屏障(Store Barrier):对volatile变量写操作后,插入写屏障,强制将私有缓存中的修改刷回主存,且保证写操作之前的指令不会被重排序到屏障之后;
  • 读屏障(Load Barrier):对volatile变量读操作前,插入读屏障,强制清空私有缓存的旧值,从主存重新加载最新值,且保证读操作之后的指令不会被重排序到屏障之前。

volatile 的正确执行流程

以线程 A 修改volatile变量、线程 B 读取该变量为例:

  1. 线程 A 修改volatile变量:
    • 先修改自己私有缓存中的副本;
    • 写屏障触发:将修改后的缓存行刷回主存,并通过 MESI 标记其他核心的该缓存行为 “失效”;
  2. 线程 B 读取该volatile变量:
    • 读屏障触发:检查私有缓存,发现缓存行已失效;
    • 主动从主存加载最新值到自己的私有缓存;
    • 线程 B 读取私有缓存中的最新值(而非直接读总线 / 主存)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:06:29

掌握OpenPLC Editor:工业自动化编程的终极解决方案

掌握OpenPLC Editor:工业自动化编程的终极解决方案 【免费下载链接】OpenPLC_Editor 项目地址: https://gitcode.com/gh_mirrors/ope/OpenPLC_Editor OpenPLC Editor作为一款完全符合IEC 61131-3标准的开源PLC编程环境,为工业自动化开发者提供了…

作者头像 李华
网站建设 2026/6/10 14:06:30

Ollama无法加载自定义数据?LLama-Factory支持灵活数据注入

Ollama无法加载自定义数据?LLama-Factory支持灵活数据注入 在当前大语言模型(LLM)快速落地的浪潮中,越来越多企业希望将通用模型适配到特定业务场景——比如客服问答、金融研报分析或医疗咨询。然而,一个普遍存在的痛点…

作者头像 李华
网站建设 2026/6/9 21:20:32

百度搜索不到?教你如何快速找到Qwen-Image官方安装包

Qwen-Image官方安装包获取指南:技术解析与实战应用 在AI生成内容(AIGC)席卷创意产业的今天,越来越多设计师、开发者和企业开始尝试将文生图模型集成到工作流中。然而一个令人困惑的现象是:明明听说通义实验室发布了专…

作者头像 李华
网站建设 2026/6/10 14:06:22

IDEA摸鱼神器:Thief-Book插件让你工作阅读两不误

IDEA摸鱼神器:Thief-Book插件让你工作阅读两不误 【免费下载链接】thief-book-idea IDEA插件版上班摸鱼看书神器 项目地址: https://gitcode.com/gh_mirrors/th/thief-book-idea 还在为上班时间想看书又担心被老板发现而烦恼吗?Thief-Book for ID…

作者头像 李华
网站建设 2026/6/10 15:40:12

Windows平台PDF处理利器:Poppler完整使用指南

Windows平台PDF处理利器:Poppler完整使用指南 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 在当今数字化办公环境中,PDF文…

作者头像 李华
网站建设 2026/6/10 15:46:59

Typora官网式简洁界面设计灵感:应用于ACE-Step前端UI优化

Typora官网式简洁界面设计灵感:应用于ACE-Step前端UI优化 在AI音乐生成工具层出不穷的今天,一个常被忽视却至关重要的问题浮出水面:用户到底是在创作,还是在“对抗界面”? 许多平台把强大的模型能力堆叠在复杂的控件之…

作者头像 李华