volatile-两大特性(可见性、有序性)、内存屏障

news2025/1/16 19:59:34

6.1 被volatile修饰的变量有两大特点 

● 特点:
  ○ 可见性
  ○ 有序性:有排序要求,有时需要禁重排

● 内存语义:
  ○ 当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值立即刷新回主内存中
  ○ 当读一个volatile变量时,JMM会把该线程对应的本地内存设置为无效,重新回到主内存中读取最新共享变量的值
  ○ 所以volatile的写内存语义是直接刷新到主内存中,读的内存语义是直接从主内存中读取

● volatile凭什么可以保证可见性和有序性?
  ○ 内存屏障Memory Barrier

6.2 内存屏障(面试重点必须拿下) 

再说vilatile两大特性:
  ○ 可见:写完后立即刷新回主内存并及时发出通知,大家可以去主内存拿最新版,前面的修改对后面所有线程可见
  ○ 有序性(禁重排):
     重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段,有时候会改变程序语句的先后顺序,若不存在数据依赖关系,可以重排序;存在数据依赖关系,禁止重排序;但重排后的指令绝对不能改变原有的串行语义!这点在并发设计中必须要重点考虑!

6.2.3 内存屏障分类 

粗分两种:
● 读屏障(Load Barrier):在读指令之前插入读屏障,让工作内存或CPU高速缓存 当中的缓存数据失效,重新回到主内存中获取最新数据。
● 写屏障(Store Barrier):在写指令之后插入写屏障,强制把缓冲区的数据刷回到主内存中。

细分四种: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1107896.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zabbix“专家坐诊”第207期问答汇总

问题一 Q:不小心把host表删除了,怎么处理?现在使用的zabbix 4.0.3的server,agent是4.2.1,能不能不动agent的情况下升级server版本,重新部署? A:数据库有备份话恢复即可,…

当下流行的编程语言

在任何时候,一些编程语言都会把大量的开发人员变成热情的布道者,试图说服世界其他地方的人相信它的伟大。 当热起来的时候,这种语言可能会成为行业标准,但其他时候,这种受欢迎程度就会消失。 1、数据的由来 每年Stack…

关于vue2回显表格数据忽略中间空格补全

关于vue2回显表格数据忽略中间空格补全 发现问题解决 发现问题 发现回显数据中间空格忽略 解决 在全局中修改在页面内修改 主要案例主要是在页面内修改 ::v-deep .cell{white-space: pre; }

COMSOL超声换能器聚焦声场仿真

超声聚焦 超声聚焦广泛应用于各类工业设备与技术中,例如我们熟悉的无损检测(NDT)和医学成像。高强度聚焦超声(HIFU)是此技术的一项临床应用,它利用探头将大部分能量集中到目标组织区域,使组织发…

uniapp实现简单的九宫格抽奖(附源码)

效果展示 uniapp实现大转盘抽奖 实现步骤: 1.该页面可设置8个奖品,每个奖品可设置中奖机会的权重,如下chance越大,中奖概率越高(大于0) // 示例代码 prizeList: [{id: 1,image: "https://img.alicdn…

【好书推荐】深入理解现代JavaScript

作者介绍 T. J. Crowder是一位拥有30年经验的软件工程师。在他的整个职业生涯中,他至少有一半时间是在使用JavaScript从事开发工作。他经营着软件承包和产品公司Farsight Software。他经常在Stack Overflow上为人们提供帮助,他是十大贡献者之一和JavaScr…

Java身份证实名认证-阿里云API 【姓名、身份证号】

1. 阿里云API市场 https://market.aliyun.com/products/57126001/cmapi00053442.html?spm5176.2020520132.101.3.a6217218nxxEiy#skuyuncode47442000022 购买对应套餐 2. 复制AppCode https://market.console.aliyun.com/imageconsole/index.htm#/?_kl85e10 云市场-已购买服…

软件工程与计算总结(十八)代码设计

目标,编写高质量的代码,本章节只介绍在易读性、易维护性和可靠性方面的最基本的代码设计方法~ 一.设计易读的代码 如果编写的代码易读性不好,在维护阶段的多次阅读过程中,将会消耗维护人员大量的精力;研究实验表明&a…

提升品牌形象:利用OLED透明拼接屏进行品牌展示

在当今数字化时代,OLED透明拼接屏作为一项引人注目的新兴技术,正逐渐改变着各行各业的显示方式。 OLED透明拼接屏技术 OLED透明拼接屏采用有机发光二极管(OLED)技术,能够提供卓越的显示效果。 与传统的液晶显示屏相比…

ios UIDocumentPickerViewController 实现TEXT、DOC、PDF等文档读取

文章目录 一、前言二、iCould相关配置三、功能实现3.1 UIDocumentPickerViewController 选取控制器3.2 读取文件一、前言 最近正在研发的项目有一个需求: 允许用户将iCloud中的文档上传,实现文件的流转。 以前接触的项目对于资料类的上传大多是仅限于图片与视频。对于文档类…

WebDAV之π-Disk派盘 + 密码键盘

密码键盘是一款密码管理器,可以存储和管理需要受保护的数据。为方便日常使用,同时也是一款安全输入法,帮您安全便捷地填写账号密码、通用内容、卡包信息。 密码键盘使用军事级的 PBKDF2 有损加密算法保护您的根密码,使用军事级的 AES 加密算法保护您的存储数据。云端再额外…

车载视频如何转换视频格式

当你收集了多种视频想在车内进行播放,它们可能不会自动播放。你有可能会在屏幕上看到一条消息,显示“文件格式不受支持”,这是因为这些视频可能采用了你的汽车无法识别的格式。 那我们如何才可以转换为车载播放器上运行的最重要且最广泛使用…

【UE4 反射系统】 UCLAS UFUNCTION UPROPERTY 宏简单解析 持续更新

目录 0 引言1 C如何实现反射机制1.1 使用代码生成工具实现反射机制 2 UE4的反射系统2.1 ****.generated.h头文件2.2 GENERATED_BODY()2.3 反射宏 UCLASS 等2.4 UHT和UBT 3 基本宏的使用3.1 UCLASS3.2 UFUNCTION3.3 UPROPERTY 🙋‍♂️ 作者:海码007&…

nginx tomcat 动静分离

动静分离: 访问静态和动态页面分开 实现动态和静态页面负载均衡。 五台虚拟机 实验1,动静分离 思路: 需要设备:三台虚拟机 一台nginx 代理又是静态 两台tomcat 请求动态页面 在全局模块中配置upstream tomcat 新建location…

springboot书籍学习平台springboot48

大家好✌!我是CZ淡陌。一名专注以理论为基础实战为主的技术博主,将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路…

C++ 异形窗口

本文参考:Duilib源码 原理:分层窗口,通过定时器和手动触发绘画窗口 由于GDI对透明通道支持不是很好,最好选择GDI进行绘画。 1.设置窗口属性WS_EX_LAYERED和绘画定时器 DWORD dwStyle ::GetWindowLong(hWnd, GWL_EXSTYLE);SetWi…

es6(八)—— set(集合) 和map的使用

ES6的系列文章目录 第一章 Python 机器学习入门之pandas的使用 文章目录 ES6的系列文章目录一、set(集合)0. 定义1. 基本使用2.常用方法(1)代码(2)效果(3)遍历 二、map0. 定义1. 基…

【AIFEM案例操作】压力容器强度分析

AIFEM是由天洑自主研发的一款通用的智能结构仿真软件,助力用户解决固体结构相关的静力学、动力学、振动、热力学等实际工程问题,软件提供高效的前后处理工具和高精度的有限元求解器,帮助用户快速、深入地评估结构的力学性能,加速产…

chatgpt图片识别、生成图片、语音对话多模态深度试玩

大模型替代人的工作的能力,越来越明显了。最近chatgpt支持多模态了,看这大佬们玩的不易乐乎,手痒也想试一试,因此有给openai上供了20刀。 另外我是gpt的拥护者,但是周围的同事有对此担忧,因为他们长期积累的…

协同创新、奔赴未来——“华为云杯”2023人工智能创新应用大赛华丽谢幕

9月27日,在苏州工业园区管理委员会、华为云计算技术有限公司的指导下,由SISPARK(苏州国际科技园)、华为(苏州)人工智能创新中心联合主办,东北大学工业智能与系统优化国家级前沿科学中心、浙江大…