volatile作用:
- 保证内存可见性,不保证原子性
- 禁止指令重排序
可见性和有序性是基于各种内存屏障(禁止指令重排序)来实现的
volatile怎么实现内存可见性
?
- volatile修饰的共享变量,在CPU汇编语言层面,加上Lock前缀,缓存锁定
- 写的强制刷回主内存,并通过总线嗅探,使其他CPU的线程工作内存的缓存失效
- 读的发现工作内存中已失效,会从主内存加载,且得等到lock释放后
volatile作用:
可见性和有序性是基于各种内存屏障(禁止指令重排序)来实现的
volatile怎么实现内存可见性
?