C中的关键字volatile的中文意思是“可变的, 不稳定的”。
这一段引用于http://dev.youkuaiyun.com/Develop/article/28/80116.shtm










这一段引用于《C++变成思想:第一卷》第3章 3.6.6

综上,为什么会在linux内核中用到volatile关键字,我想主要是因为内核有许多直接操作寄存器的汇编代码,而这些汇编代码就是“在代码控制之外”的代码。编译器检测不到这些汇编代码对变量值的改变,那么在编译器做优化的时候就会读出一些“脏值”或者“旧值”,而这又是我们不愿意看到的。
在2.4.0内核中 atomic_t 的定义:








下面是一个转载很多的例子,我编译没有通过
没有使用volatile的代码:


















使用了volatile的代码:
















现在对volatile有概念上的了解,但还没有在实践中使用到。有时间先编译通过上面的嵌入汇编代码再说深层的了。