volatile 的 内存屏障

 

 如下的 写 和 读 就是对 volatile 变量进行变量值的读写操作。

为什么在写操作后加入StoreLoad

       因为storeLoad 相当于一个存储屏障和加载屏障,能够把执行处理器的写缓冲区的内容冲刷到高速缓存中去,还能情况执行处理器的无效化队列,把其他处理器的更新情况更新到执行处理器当中。

为什么在写操作前加入释放屏障

       保证了volatile写操作与该操作之前的任何读、写操作都不会进行重排序。从而保证了volatile写操作之前,任何的读写操作都会先于volatile被提交。 

为什么在读操作前加入LoadLoad

因为LoadLoad 能够清除无效化队列,读到其他执行处理器的更新情况。

为什么在读操作后加入获取屏障

       获取屏障(LoadLoad屏障LoadStore屏障)禁止了volatile读操作与其之后的任何读写操作进行重排序。保障了volatile变量读操作之后的任何读写操作,volatile的写线程的更新已经对其可见。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值