CPU,内存,IO之间速度差异太大, 为了合理利用 CPU 的高性能,平衡这三者的速度差异
- CPU 增加了缓存,以均衡与内存的速度差异;
- 操作系统增加了进程、线程,以分时复用 CPU,进而均衡 CPU 与 I/O 设备的速度差异;
- 编译程序优化指令执行次序,使得缓存能够得到更加合理地利用。
1、源头之一 缓存导致的可见性问题
单核时代 不存在可见性问题,因为所有的线程都作用于同一个内存
2、源头之二 线程切换带来的原子性问题
什么是原子性
我们把一个或者多个操作在 CPU 执行的过程中不被中断的特性称为原子性
源头之三:编译优化带来的有序性问题
double check的单例问题
https://blog.csdn.net/hagle_wang/article/details/106632291
问题
volatile是如何保证线程可见的?