对于 volatile 型变量的特殊规则

当一个变量被定义成 volatile 之后,它将具备两项特性:

  1. 第一项是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。

  2. 使用 volatile 变量的第二个语义是禁止指令重排序优化

volatile 变量读操作的性能消耗与普通变量几乎没有什么差别,但是写操作则可能会慢上一些,因为它需要在本地代码中插入许多内存屏障指令来保证处理器不发生乱序执行。

最后更新于