C语言之--volatile
volatile指令关键字,作用为确保本条指令不会被编译器优化,表明变量有可能会被改变,相应的变量应直接存取至原始内存地址。
在一个线程内,当读取一个变量时,为提高存取速率,编译器优化时有时会把变量读取到一个寄存器中,以后直接从寄存器中取值。当变量在本线程内改变时,会把新值copy到寄存器中,保持一致。但若因为其他线程而改变,寄存器中的值未同步改变,会造成实际值与读取值不一致。
volatile常用在以下几种情况:
1.中断服务程序中修改的供其他程序检测的变量
2.多任务环境下,各任务间共享的标志
3.存储器映射的硬件寄存器
浙公网安备 33010602011771号