volatile直译为“易变的”,在C语言中,当它修饰变量后,编译器能够知道不要对该变量进行优化,让CPU每次直接从内存中读取该变量的值(而不是被优化后,让CPU在寄存器中生成该变量的拷贝,直接从寄存器读取变量的值)。
volatile作用:
防止编译器对访问频率较高的变量进行优化(防止编译优化)。
volatile的三个应用场景:
1. 在多线程编程中对临界资源的访问
2. 在中断服务函数中访问到的全局变量
3. 访问硬件寄存器时,寄存器的地址
volatile直译为“易变的”,在C语言中,当它修饰变量后,编译器能够知道不要对该变量进行优化,让CPU每次直接从内存中读取该变量的值(而不是被优化后,让CPU在寄存器中生成该变量的拷贝,直接从寄存器读取变量的值)。
防止编译器对访问频率较高的变量进行优化(防止编译优化)。
1. 在多线程编程中对临界资源的访问
2. 在中断服务函数中访问到的全局变量
3. 访问硬件寄存器时,寄存器的地址