volatile变量说明
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。
volatile修饰符的主要目的是提示编译器该对象可能在编译器未监测到的情况下被改变,因此不要对引用这些对象的代码做优化处理。
关键点:
1、在编译器监测范围之外被改变。2、对引用这些对象的代码不做优化处理。
实现方法:
每次要获取该变量的值时都从内存中获取而不直接读取存储该变量的寄存器。
会发生的情况举例:
主要是中断等情况,如一个被系统始终更新的变量。中断函数中会改变值的变量。这些情况编译器监测不到,因为编译器无法推知什么时候发生中断。