volatile 关键字的理解

volatile这个关键词,之前在学C 的时候,貌似理解了,又忘记了,今天在学习linux 的C 编程中,再次碰到了,这本书上讲的比较透彻,为何要有这个关键字,是由于代码编译的时候,编译器会对指令进行优化,优化的地方通常是同一变量访问直接从寄存器里访问,而再也不直接对实际的物理地址进行操做,这样,致使操做不成功,例如: 屡次从同一个变量取值,那么代码优化后,可能直接从上一次的寄存器里取值(这样快一些),而再也不从变量的内存地址取值, 若是这个变量其实是被修改过了,那此次操做就失败了。写数据也是同样的道理,因此,对于这样的状况,咱们就要告诉编译器,你优化代码的时候,不能对个人这个变量读写操做进行优化,要老老实实地对实际物理地址进行操做,不要使用寄存器的数据,也不要使用cache里的数据,这就是volatile的做用。linux

通常是设备寄存器,或者全局变量,信号量,多线程等 编程

相关文章
相关标签/搜索