一台计算机中最核心的组件是CPU、内存、以及I/O设备。在整个计算机的发展历程中,除了CPU、内存以及I/O设备不断迭代升级来提升计算机处理性能之外,还有一个非常核心的矛盾点,就是这三者在处理速度的差异。CPU的计算速度是非常快的,内存次之、最后是IO设备比如磁盘。而在绝大部分的程序中,一定会存在内存访问,有些可能还会存在I/O设备的访问
为了提升计算性能,CPU从单核升级到了多核甚至用到了超线程技术最大化提高CPU的处理性能,但是仅仅提升CPU性能还不够,如果后面两者的处理性能没有跟上,意味着整体的计算效率取决于最慢的设备。为了平衡三者的速度差异,最大化的利用CPU提升性能,从硬件、操作系
统、编译器等方面都做出了很多的优化
1. CPU增加了高速缓存
2. 操作系统增加了进程、线程。通过CPU的时间片切换最大化的提升CPU的使用率
3. 编译器的指令优化,更合理的去利用好CPU的高速缓存
然后每一种优化,都会带来相应的问题,而这些问题也是导致线程安全性问题的根源。为了了解前面提到的可见性问题的本质,我们有必要去了解这些优化的过程