volatile 关键字是一种类型修饰符,用于声明变量。
作用:
volatile 关键字的本意是“易变的”。
用于修饰变量,通常用于建立语言级别的内存屏障(memory barrier)。
主要用途是告诉编译器,这个变量可能会被某些未知因素更改,例如操作系统、硬件或其他线程等。
特点:
当使用 volatile 声明的变量的值时,系统总是重新从它所在的内存读取数据,即使前面的指令刚刚从该处读取过数据。
避免了编译器对访问该变量的代码进行优化,确保对特殊地址的稳定访问。
用法示例:
假设有一个变量 int i = 10;,
如果使用 volatile 声明,每次访问 i 都会从内存中读取最新的值,而不是使用已经存在寄存器中的值。
多线程环境下的应用:
在多线程并发访问共享变量时,使用 volatile 可以确保对变量的修改对其他线程可见。
例如,如果一个线程改变了变量的值,其他线程可以立即看到这个变化。
总之,volatile 关键字用于保证对特殊地址的稳定访问,特别在多线程环境下非常有用。