volatile关键字

volatile是CPP/C中的一个类型修饰符,代表其后面的被修饰的变量是易变。比如一个变量a在多线程环境中会被频繁访问和修改,那么我们就需要使用这个关键字修饰。

访问被修饰的变量会“直接从原始内存地址”获取。 因此编译后的程序每次读取或存储该变量时,编译器不会优化,而是直接访问存放该变量的原始地址。

如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。