Data 2108/10/19 add by WJB
volatile 中文意义 不稳定的、易变的; volatile 关键字是一种类型修饰符, 与关键词 const对应。 volatile 指出变量的值随时可能发生变化的,每次使用它的时候必须从内存地址中读取,因而编译器生成的汇编代码会重新从变量的内存地址读取数据。
常见用法:
1) 中断服务程序中修改的供其它程序检测的变量需要加volatile;
2) 多任务环境下各任务间共享的标志应该加volatile;
3) 存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义
多线程下的volatile
有些变量是用volatile关键字声明的。当两个线程都要用到某一个变量且该变量的值会被改变时,应该用volatile声明,该关键字的作用是防止优化编译器把变量从内存装入CPU寄存器中。如果变量被装入寄存器,那么两个线程有可能一个使用内存中的变量,一个使用寄存器中的变量,这会造成程序的错误执行。volatile的意思是让编译器每次操作该变量时一定要从内存中真正取出,而不是使用已经存在寄存器中的值。