深入理解 C++ Volatile变量
2013-04-09 21:58
183 查看
限定词volatile 告诉编译器“不知何时会改变”,防止编译器依据变量的稳定性作任何优化。当读在代码之外的某个值时。例如读一块通信硬件中的寄存器,将使用这个关键字。无论何时需要volatile变量的值,都能读到,即使在该行之前刚刚读过。
“在代码的控制之外”的某个存储空间的一个特殊的例子是在多线程程序中。如果正在观察被另一个线程或进程的修改的特殊标识符,这个标识符应该是“volatile”的,所以编译器不会认为它能够对标识符的多次读入进行优化。
注意:当编译器不进行优化时,volatile可能不起作用,但是当开始优化代码时,volatile可能不起作用,但是当开始优化代码时(当编译器开始寻找冗余的读入时),可以防止出现重大的错误。
“在代码的控制之外”的某个存储空间的一个特殊的例子是在多线程程序中。如果正在观察被另一个线程或进程的修改的特殊标识符,这个标识符应该是“volatile”的,所以编译器不会认为它能够对标识符的多次读入进行优化。
注意:当编译器不进行优化时,volatile可能不起作用,但是当开始优化代码时,volatile可能不起作用,但是当开始优化代码时(当编译器开始寻找冗余的读入时),可以防止出现重大的错误。
相关文章推荐
- C++的一些深入理解
- 深入理解C++虚函数
- 深入理解C++中public、protected及private用法
- 深入理解C/C++中的位域结构体
- 深入理解C++的动态绑定和静态绑定
- 深入理解C++中public、protected及private用法
- 深入理解C++的动态绑定和静态绑定
- 深入理解C/C++ [Deep C (and C++)]
- 【C++进阶】深入理解C/C++(3)
- C++默认构造函数——深入理解
- 深入理解C++中的某些基本概念
- 深入理解C++浮点数(float、double)类型数据比较、相等判断
- C++深入理解虚函数
- 深入理解C++的动态绑定和静态绑定
- 深入理解C++的多态性
- 深入理解c++中virtual关键字
- 深入理解c++枚举法
- C++深入理解(4)------函数模板以及显式具体化(读书笔记)
- 深入理解C++对象模型之类型转换:ReinterpretCast
- 深入理解C++的new