volatile底层实现

3 篇文章 0 订阅
3 篇文章 0 订阅

volatile 底层实现

一. volatile 的作用
1、线程可见线
2、禁止指令重排序

什么是线程可见性 ?

	举个例子、富二代小王有一套1亿的别墅,他想要租出去,于是就找了10个人想租套别墅,他和这10个人都谈了一次,第二天有一个人买走了,于是富二代就通知其他9个人这套别墅已经租出去了。
  1. 其中别墅就是众多线程要访问的值,

  2. 10个人就是众多线程

  3. 通知其他9个人这套别墅已经租出去了就是线程可见性,

    底层通过mesi缓存一致性协议’独占(exclusive)、共享(share)、修改(modified)、失效(invalid)
    在这里插入图片描述

线程1与线程2都会将X读入到自己的工作内存中,此时线程2将X的值改为10000但是线程用的还是X=1的值,此时cpu总线嗅探机制会发现线程2已经将X修改了,,这时MESI缓存一致性协议会r让线程1中X的值让他失效,而且线程1会重新读一遍主内存中的值.因为从嗅探发现X被修改到把新值写会主内存是一个原子操作,所以不会在写回主内存的过程中被其他新线程读继续取到原来的值

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值