当前位置:网站首页>【并发编程051】volatile 内存语义的实现原理
【并发编程051】volatile 内存语义的实现原理
2022-04-22 12:16:00 【檀越剑指大厂】
volatile 内存语义的实现原理
Volatile内存语义请参见 43 题 。此题主要讲解volatile内存语义的实现原理。
为了实现volatile内存语义, JMM 会分别禁止如下两种类型的重排序类型:

从图中可看出:
-
volatile写写禁止重排序
-
volatile读写, 读读禁止重排序; volatile读和普通写禁止重排序
-
volatile写读, volatile写写禁止重排序。

为了实现volatile的内存语义, 编译器在生成字节码时, 会在指令序列中插入内存屏障来 禁止特定类型的处 理器重排序 。对于编译器来说, 发现一个最优布置来最小化插入屏障的总 数几乎不可能 。 为此, JMM采取 保守策略 。 下面是基于保守策略的JMM内存屏障插入策略。
• ·在每个volatile写操作的前面插入一个StoreStore屏障。
• ·在每个volatile写操作的后面插入一个StoreLoad屏障。
• ·在每个volatile读操作的后面插入一个LoadLoad屏障。
• ·在每个volatile读操作的后面插入一个LoadStore屏障。

距离说明:


版权声明
本文为[檀越剑指大厂]所创,转载请带上原文链接,感谢
https://qinyingjie.blog.csdn.net/article/details/124337974
边栏推荐
猜你喜欢

EFR32晶体校准指南

MySQL 5.0安装教程图解详细教程
![JS [detailed explanation] closure](/img/3d/1db37e18300c56848ef00928392d0a.png)
JS [detailed explanation] closure

电工第二讲

"Open source summer" activity is hot. In the registration, rich bonuses are waiting for you to get!

When the new version of redis is released, do you still think redis is a single thread?

Electrician Lecture 1

Codeforces Round #783 (Div. 2)

congratulations! You have been concerned about the official account for 1 years, and invite you to join NetEase data analysis training.

PyTorch处理RNN输入变长序列padding
随机推荐
实操教程|Pytorch - 弹性训练极简实现( 附源码)
带你详细入门华为云会议【玩转华为云】
MySQL学习第四弹——多表查询分类以及案例练习源码详解
【深入理解TcaplusDB技术】扫描数据接口说明——[List表]
Canvas series tutorial 01 - line, triangle, polygon, rectangle, palette
Packaging method 2
UML总结
CPU和GPU有什么区别?
CVPR2022 | 移动端手部三维重建
NFT、GameFi、SocialFi、云存储,DFINITY 生态上最热赛道详解
【生活中的逻辑谬误】以暴制暴和压制理性
nt10.0系统(server2016/2019)RuntimeBroker异常关机,关联事件ID 142/143/226/227/228等
日撸代码300行学习笔记 Day 47
射频芯片在手机上起到什么作用?
leetcode:508. Subtree elements with the most occurrences and [DFS records]
Pytorch processes RNN input variable length sequence padding
Implementation and principle analysis of synchronized
Ptorch quantification (torch. Quantification)
Case 4-1.7: file transfer (concurrent search)
Take you to Huawei cloud Conference [play with Huawei cloud]