对于 volatile 型变量的特殊规则
当一个变量被定义成 volatile 之后,它将具备两项特性:
第一项是保证此变量对所有线程的可见性,这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。
使用 volatile 变量的第二个语义是禁止指令重排序优化。
从硬件架构上讲,指令重排序是指处理器采用了允许将多条指令不按程序规定的顺序分开发送给各个相应的电路单元进行处理。但并不是说指令任意重排,处理器必须能正确处理指令依赖情况保障程序能得出正确的执行结果。
在同一个处理器中,重排序过的代码看起来依然是有序的。
最后更新于