C/C++ 中 volatile 关键字详解 | 菜鸟教程 (runoob.com)
当要求使用volatile声明的变量的值时,系统总是重新从它所在的内存中读取数据,即使它前面的指令刚刚从该处读取过数据,而且读取的数据立刻被保存。
volatile int i=10;
int a = i;
...
// 其他代码,并未明确告诉编译器,对 i 进行过操作
int b = i;
编译器生成的汇编代码会重新从i的地址读取数据放在b中。
如果没有volatile,编译器发现两次从i读取的代码之间的代码没有对i进行操作,它会自动把上次读的数据放在b中。
在多线程并发访问共享变量时,一个线程改变了变量的值,怎样让改变后的值对其他线程可见。