程序设计 关键字解释

一、volatile

推荐一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:

  1). 并行设备的硬件寄存器(如:状态寄存器)

  2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)

  3). 多线程应用中被几个任务共享的变量

cpu也是有存储器的,这个存储器就是它的寄存器,虽然数量有限。编译器总是把一些常用的内存地址内容,放到寄存器,这样读取速度更快。如果多线程共享一个变量,而这个变量会不定被哪个线程更改。那么最好声明这个变量为volatile,否则编译器会对该变量做出优化,将内存中的值读到寄存器,这样会造成别的线程改了,但是寄存器还没有改。(从C++理解计算机、windows程序设计)

posted @ 2010-11-06 17:34  pjh123  阅读(203)  评论(0编辑  收藏  举报