首页 > 其他分享 >volatile、mutable和explicit

volatile、mutable和explicit

时间:2023-02-20 16:12:41浏览次数:32  
标签:变量 explicit volatile 修饰 mutable 构造函数

volatile

  • 用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。
  • 遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。
  • 当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。

小结:

  • volatile定义变量的值是易变的,每次用到这个变量的值的时候都要去重新读取这个变量的值,而不是读寄存器内的备份。多线程中被几个任务共享的变量需要定义为volatile类型。
  • volatile的意思是让编译器每次操作该变量时一定要从内存中真正取出,而不是使用已经存在寄存器中的值。

mutable

  • 被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中
  • 在const函数里面修改一些跟类状态无关的数据成员,那么这个函数就应该被mutable来修饰,并且放在函数后后面关键字位置。

explicit

  • 用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换
  • 只能用于类内部的构造函数声明上
  • 作用于单个参数的构造函数
  • 被explicit修饰的构造函数的类,不能发生相应的隐式类型转换

标签:变量,explicit,volatile,修饰,mutable,构造函数
From: https://www.cnblogs.com/xiaoqing-ing/p/17137776.html

相关文章

  • volatile
    缓存一致性问题每个线程都有自己的工作内存。线程在初始化时从主内存读取所需的变量值到工作内存。在线程运行时,如果是读取则从工作内存中读取,如果是写入则先写到工作内存......
  • 决战圣地玛丽乔亚Day14 ----Volatile关键字分析
    volatile:背景: CPU和主存读写速度不一致,出现了高速缓存。把一些经常读的数据存入高速缓存,交互计算和高速缓存进行,修改完毕后再从高速缓存刷回主存中。但是问题来了!CPU......
  • volatile的实现原理-内存屏障
     被volatile修饰的变量在编译成字节码文件时会多个lock指令,该指令在执行过程中会生成相应的内存屏障,以此来解决可见性跟重排序的问题。内存屏障的作用:1.在有内存屏障......
  • The `.update()` method does not support writable nestedfields by default. Write
    原因Serializers中,外表的字段如source="group.title"不能进行写入操作解决办法将外表字段设置为read_only=True,此时可能有人就会问了:前端字段传过来还是group字段的id......
  • 2023-02-14 Apps targeting Android 12 and higher are required to specify an expli
    新建android项目,选择basicactive一项,在跑模拟器的时候,报错。解决方案:找到AndroidManifest.xml文件,在<activity里面添加一行属性 android:exported="true"详情Gpt给出......
  • C++中explicit的用法
    C++中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色。1是个构造;2是个默认且隐含的类型转换操作符。所以,有时候在我们......
  • Synchronized和Volatile的对比
    Synchronized和Volatile是并发中的两大关键字,有相似性和不同点。Synchronized更详细介绍参考https://www.cnblogs.com/spark-cc/p/17069585.htmlvolatile简单来说就是轻......
  • 看一遍就懂,详解java多线程——volatile
    多线程一直以来都是面试必考点,而volatile、synchronized也是必问点,这里我试图用容易理解的方式来解释一下volatile。来看一下它的最大特点和作用:一使变量在多个线程间可见......
  • 单例模式为什么要加volatile修饰?
    单例模式为什么要加volatile来修饰?解析:这里我们自己应该要先搞清楚面试官问的到底是什么?因为单例模式有四种实现:饿汉模式,懒汉模式,静态内部类,枚举搞清楚问的是哪一种,其......
  • volatile和synchronized关键字
    1.volatile关键字 Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这......