C++ mutable & volatile 关键字

mutable关键字

1) 如果需要在const成员方法中修改一个成员变量的值,那么需要将这个成员变量修饰为mutable。即用mutable修饰的成员变量不受const成员方法的限制;

2) 可以认为 mutable 的变量是类的辅助状态,但是只是起到类的一些方面表述的功能,修改他的内容我们可以认为对象的状态本身并没有改变的。实际上由于 const_cast的存在,这个概念很多时候用处不是很到了。

 

volatile关键字

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

volatile用在如下的几个地方:

1.状态寄存器一类的并行设备硬件寄存器。因为每次对它的读写都可能由不同意义。

2.中断服务子程序会访问到的非自动变量(供其它程序检测的变量)。

3.多线程间被几个任务共享的变量。

注意:虽然volatile在嵌入式方面应用比较多,但是在PC软件的多线程中,volatile修饰的临界变量也是非常实用的。

posted @ 2021-08-30 11:16  默行于世  阅读(35)  评论(0编辑  收藏  举报