可见性可有序性
简介
并发编程的问题是如何保证原子性,可见性,有序性.
通过cas可以保证原子性,通过volatile关键字可以保证有序性和可见性.
cpu的缓存结构

由于cpu的速度远大于物理内存,因此在cpu和内存直接增加了多层缓存.cpu和内存直接通过这些高速缓存来进行数据传输.在多核cpu之间,l3缓存是cpu私有的,如何保证数据的一致性,则需要缓存一致性协议.
缓存一致性协议

当某cpu对高速缓存中的数据进行操作后,通知其他cpu放弃存储在各种高速缓存中的数据,或者从主存中重新读取.
volatile原理

通过编译的汇编命令可以看到,volatile关键字汇编命令带上了lock addl.该lock指令有3个功能.
1.将当前cpu的缓存数据立即刷新到系统内存.
2.使其他cpu的缓存中的数据地址失效.
3.禁止指令重排.
Last updated
Was this helpful?