当前位置: 首页 > news >正文

03. 内存屏障

1.内存屏障


1.内存屏障

1).内存屏障简介 内存屏障是CPU和编译器的"交通信号灯",用来阻止指令乱序执行,强制缓存数据同步,解决多线程下的可见性和有序性

2).为什么需要内存屏障 我们写代码时,默认指令是按顺序执行的,但CPU和编译器为了提升效率,会执行以下操作 a.指令重排 编译器/CPU会打乱指令的执行顺序(只要不影响单线程逻辑),比如你写了A=1,B=2,CPU可能先执行B=2,再执行A=1单线程不会出现问题,但多线程会出大问题 b.缓存不一致 每个CPU核心都有自己的缓存(速度比内存快N倍),一个核心修改了变量(比如把isLoaded=true写到缓存),另一个核心可 能还在读缓存里的旧值(isLoad=false),导致"明明写了, 另一个线程却看不到"
// 线程1:加载资源并标记状态boolisLoaded=false;Objectresource=LoadBigResource();// 耗时操作isLoaded=true;// 线程2:检测状态并使用资源while(!isLoaded){}UseResource(resource);// 理论上isLoaded=true时,resource一定加载好了?
实际运行中,CPU可能对线程1做指令重排,先执行isLoaded=true,再执行LoadBigResource();结果就是线程2看到 isLoaded=true,直接执行UseResource,但此时加载资源未完成,会出现报错

3).内存屏障的两个作用 a.禁止指令重排 屏障前的指令必须全部执行完,才能执行屏障后的指令;比如再LoadingResource()和isLoaded=true之间加屏障,CPU就 不会把isLoaded=true提前执行 b.强制缓存同步 屏障会让核心把缓存里的修改刷写到内存(写屏障)或从内存重新读取最新数据(读屏障),让所有核心看到的变量值是一致的 比如线程1加写屏障,isLoaded=true会立刻同步到内存;线程2加读屏障,会放弃自己的旧屏障,去内存读最新的isLoaded

4).常见的内存屏障类型 a.写屏障(StoreBarrier):核心是写后同步,保证屏幕前的所有写操作,都刷到内存,让其核心可见 b.读屏障(LoadBarrier):核心是读前刷新,保证屏幕后的所有读操作,都从内存读取最新值,不是缓存旧值 c.全屏障(FullBarrier):同时禁止读写重排,强制读写都同步

5).在C#/Unity里,怎么用内存屏障 a.volatile关键字 给变量加volatile,相当于给这个变量的读写加了轻量级内存屏障:禁止指令重排,强制读写走内存而非缓存volatileboolisLoaded=false;// 加volatile
b.Thread.MemoryBarrier()手动插入全屏障,适合需要精确控制的场景Objectresource=LoadBigResource();Thread.MemoryBarrier();// 屏障:前面的写操作必须完成并同步isLoaded=true;
c.原子操作(Interlocked类)Interlocked.Increment/CompareExchange等方法,底层都带内存屏障,既保证原子性,又保证可见性和有序性
d.(lock)lock的Enter和Exit时,会自动插入全屏障,所以用lock的代码天然没有内存屏障问题(但锁的开销比volatile)

-内存屏障:只解决可见性、有序性,不保证原子性(比如i++这种非原子操作,加屏障也会有线程安全问题)-/原子操作:既保证原子性,又隐含内存屏障的功能
http://www.jsqmd.com/news/134224/

相关文章:

  • 大语言模型训练揭秘:通俗易懂地解析训练过程与数据准备!
  • 2025年比较好的意大利四段力铰链/耐用四段力铰链厂家最新推荐排行榜 - 品牌宣传支持者
  • 2025年评价高的消防排烟风机/一级能效风机最新TOP厂家排名 - 品牌宣传支持者
  • 斜轨/双头数控车床哪个品牌好?哪家售后服务好? - 品牌推荐大师1
  • 家用呼吸机十大品牌解析:伟晴大健康领衔,精准守护呼吸健康 - 品牌评测分析
  • 《动手构建大模型》零基础进阶大模型实战高手之路,系统学习LLM开发,成为实战型AI工程师!
  • Vehicle Data Reconstructor(VDR):车辆数据取证解决方案
  • 中望CAD机械版2025:修改直径标注的样式
  • python易混淆知识点(十六)lambda表达式
  • 探秘网红景区:灵龙谷——亲子游与高性价比服务的绝佳之选 - mypinpai
  • 三大信号、一个前提:判断你企业入场数据中台的最佳时机
  • 深度拷问:为什么一用AI,我的企业就“隐身”了? - 优质品牌推荐TOP榜
  • 计算机毕业设计springboot校园运动场地预约系统 高校体育场地在线预约平台的设计与实现 基于SpringBoot的校园运动场馆智能预订系统
  • 2025年比较好的余热蒸汽锅炉/燃油蒸汽锅炉厂家最新用户好评榜 - 品牌宣传支持者
  • 完整教程:基于ElasticSearch的语义检索学习-向量化数据、向量化相似度、向量化检索
  • 论一个“纯粹”的数据中台对数字化转型的核心价值
  • 2025哈氏合金过滤洗涤干燥三合一设备厂家排名,实验型/喷涂型设备专业供应商推荐 - 工业推荐榜
  • 【Open-AutoGLM是一条很陡】:权威专家亲授6种降维攻坚方法,告别无效尝试
  • SwiftUI Accessibility Masterclass
  • 2025年靠谱的超临界萃取设备/超临界萃取厂家最新用户好评榜 - 品牌宣传支持者
  • 计算机毕业设计springboot同城伴宠平台的设计与实现 基于SpringBoot的同城宠物托管与交流平台研发 SpringBoot驱动的同城宠物互助服务系统的设计与落地
  • 2025年质量好的阻尼4D滑轨/抽屉4D滑轨厂家推荐及采购参考 - 品牌宣传支持者
  • 超声波焊接设备哪家企业口碑好?2025年度用户好评较多的行业标杆企业分享 - 品牌推荐大师
  • 2025年北京私人定制旅游品牌企业排行榜,精选私人定制旅游公司推荐 - mypinpai
  • 21、Elasticsearch聚合与分面查询深入解析(上)
  • 上海做 GEO AI 优化服务如何选?精选三家AI搜索优化服务 口碑与实力双维度分析 - 资讯焦点
  • 2025年诚信的小型喇叭排行榜,精选小型喇叭加工厂与迷你喇叭厂家推荐 - myqiye
  • 2025亲子研学旅行TOP5专业推荐:亲子研学旅行哪家专业 - 工业品牌热点
  • 基于微信小程序的个性化点餐系统任务书
  • 2025年唐山GEO本地优化公司排行榜,新测评精选GEO精准优化服务商推荐 - myqiye