一直看到一些书对volatile这个关键词的解释,都不懂说的什么东西,也很少见程序里面用过,自己
也一直不会用,今天在内核的中PCB里面的字段中见到它了。说说我的理解吧。
- struct task_struct {
- volatile long state;
- ...
- };
编译器有个“缓存”的优化方式,就是编译器发现两次使用同一个变量的时候,第一次取数会去内存取数,然后就将数缓存到寄存器里面,在第二次取数就去寄存器取。然而这中间就有可能改变这个值而出错。
这儿的volatile就是要告诉cpu每次取数都到内存去取数,要保证state这个值的正确性,可能是因为
这个state比较重要吧。
书本上volatile的作用是:声明可变类型的变量。可变就说明该变量的值很容易变化,所以要编译器不要优化它。
阅读(1652) | 评论(4) | 转发(1) |