volatile作用:保存内存的可见性。告诉编译器,volatile修饰的变量,不允许优化,对该变量的任何操作都必须再真实的内存中进行操作。
比如:
对2号信号自定义捕捉方式:
我们知道变量数据都保存在内存中,但是只有CUP能进行运算。运算时变量的数据会从内存拿到寄存器里。
当我们在函数中使用一些不会修改的变量时,编译器可以对其进行优化。因为数据不会改变,我们可以让CPU在运算时,只要在该数据的寄存器里拿数据就好了,就不用到内存拿数据,效率会高一点。
然后会出现下面的情况:
这时我们在quit前面加一个关键字volatile修饰
总结:volatile修饰的变量,不允许编译器优化,对该变量的任何操作都必须在真实的内存中进行操作。