volatile的可见性原理是什么

发布时间:2021-12-03 18:01:09 作者:柒染
来源:亿速云 阅读:103

volatile的可见性原理是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

关键点1: 总线嗅探器(MESI 缓存一致性原理 )

关键点2: 总线锁、缓存锁,为了解决并发问题,会在内存区域的值加锁(内存锁),是在store 之前会给总线内的值加一个锁,write 完成后在解锁(这里大部分是缓存行锁的,总线锁看情况)。

关键点3:

就是为了使一个CPU上运行的线程能够读取到另外一个CPU线程的共享变量更新。这个CPU必须先根据无效化队列中存储的消息,删除相应高速缓存内的数据副本,从而在其他CPU更新共享变量时能通过缓存一致性协议同步到该CPU的高速缓存中。内存屏障中的加载屏障 (Load Barrier)就是用来解决这个问题的。Load Barrier会根据会根据无效化队列内容的内存地址,将其他CPU上使用了该缓存的高速缓存中对应的数据状态标记为I,从而使用该CPU后续针对这个的读操作时必须先发送Read消息,以将其他处理器对相关共享变量所做的更新同步到该处理器的高速缓存中。

当修改了增加volatile 的变量时,会马上将变量值写回到主内存中,这时会在store 前对主内存的这个变量加锁,在store 通过总线的时候触发MESI缓存一致性协议,通过总线嗅探器将其他cpu工作内存中的此变量置为无效状态(涉及内存屏障)。当次cpu 完成变量的write 操作时,在对变量进行解锁。

看完上述内容,你们掌握volatile的可见性原理是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. 如何实现Java并发volatile可见性
  2. 使用volatile怎么验证线程之间的可见性

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

volatile

上一篇:如何简述CAP原理

下一篇:网页里段落的html标签是哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》