c++之volatile

来源:互联网 发布:淘宝上靠谱的运动鞋店 编辑:程序博客网 时间:2024/05/26 15:58

volatile被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。


volatile的作用:

        作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.  简单地说就是防止编译器对代码进行优化.比如如下程序:  

        XBYTE[2]=0x55;  

        XBYTE[2]=0x56;  

        XBYTE[2]=0x57;  

       XBYTE[2]=0x58;  

       对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器就不能像对待纯粹的程序那样对上述四条语句进行优化,只认XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一的进行编译并产生相应的机器代码(四条).

原创粉丝点击