【C++】【语法】volatile关键字
volatile关键字
volatile
关键字告诉编译器,这个变量的值可能会被其他线程或硬件改变,所以每次访问这个变量时都需要从内存中读取它的值,而不是使用寄存器中的缓存值。
例如,volatile bool stopped
:
volatile bool stopped = false;
在多线程环境中,一个线程可能会不断检查stopped
的值,而另一个线程可能会改变它的值。如果没有volatile
关键字,编译器可能会优化代码,使得检查线程不会重新读取stopped
的值,而是使用缓存的值,从而导致检查线程无法正确响应stopped
值的变化。
通过声明stopped
为volatile
,编译器会确保每次访问stopped
时都从内存中读取其最新值,而不是使用缓存值,从而确保多个线程之间的正确通信。