现在进入了多核时代;程序也要发生一系列变化;比如说现在单纯的变量已经不再安全了;
比如说一个int型别的数据,我们同时开了几个线程在跑。现在有了一个线程突然改变了该int变量,我们的意图是几个线程都要把这个变量反映出来;但是往往事与愿违。
让我们来分下问题所在:
int a;
while(a)
{……}
程序执行到该段时,首先要从内存里面读取到寄存器里面;然后程序从寄存器里面读取。
这里就有了一个漏洞了。假设我们的编译器做了优化(在while循环那段),这样一来,就会导致我们的变量的变化不能及时反映出来;我们 的软件该做到的却没有做到。
这么一来,我们自然想到,每次要从内存里面读取出来,不再度入到寄存器;
volatile就是在这种状态下呼之而出了。