Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2523
  • 博文数量: 2
  • 博客积分: 46
  • 博客等级: 民兵
  • 技术积分: 25
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-15 16:02
文章分类
文章存档

2012年(2)

我的朋友
最近访客

分类:

2012-06-04 13:52:53

一直看到一些书对volatile这个关键词的解释,都不懂说的什么东西,也很少见程序里面用过,自己
也一直不会用,今天在内核的中PCB里面的字段中见到它了。说说我的理解吧。

  1. struct task_struct {
  2.         volatile long state;
  3.         ...
  4. };
编译器有个“缓存”的优化方式,就是编译器发现两次使用同一个变量的时候,第一次取数会去内存取数,然后就将数缓存到寄存器里面,在第二次取数就去寄存器取。然而这中间就有可能改变这个值而出错。
这儿的volatile就是要告诉cpu每次取数都到内存去取数,要保证state这个值的正确性,可能是因为
这个state比较重要吧。

书本上volatile的作用是:声明可变类型的变量。可变就说明该变量的值很容易变化,所以要编译器不要优化它。



阅读(312) | 评论(0) | 转发(0) |
0

上一篇:最后,时间会为你留下最合适的人

下一篇:没有了

给主人留下些什么吧!~~