volatile这种类型是干什么用的???
volatile这种类型是干什么用的??? 问题点数:0、回复次数:3Top
1 楼Salam2001(Upgrading : C++ and Data Structure ...)回复于 2003-09-04 19:52:35 得分 0
这不是类型,而是修饰符。它告诉编译器不要优化该关键字后面的数据对象。
举例说,如果有个变量平繁地被几个函数所调用,则编译器会将这个变量放到寄存器中.
如果该变量不是由该程序所修改而是有其他某个地方修改(比如说硬件设备等...)的话,就应该用volatile来提醒编译器不要进行优化,否则有可能会出现意料之外的结果.
小弟初学, 不对之处, 还请高手指点.Top
2 楼techlibin(techlb)回复于 2003-09-04 20:15:16 得分 0
如Salam2001(Look 4 Angel) 所说,再举个例子:
线程A要访问线程B的变量V,如果不使用volatile关键字修饰,则变量V可能被存放在某个寄存器中。我们知道各个线程都有自己的寄存器,也就是现在线程B使用自己的某个寄存器存放变量V。但是线程A不知道这个事实,还是根据该变量地址访问该变量,这就可能导致数据的不一致。Top
3 楼tuxw(醉书生)回复于 2003-09-04 20:17:35 得分 0
可能在编译器不知道的情况下改变,编译不得对它优化Top



