1.为什么是并发
计算机世界的快速发展离不开 CPU、内存和 I/O 设备的高速发展,但是这三者一直存在速度差异性问题,我们可以从存储器的层次结构可以看出
CPU 内部是寄存器的构造,寄存器的访问速度要高于高速缓存,高速缓存的访问速度要高于内存,最慢的是磁盘访问。程序整体的性能取决于最慢的操作也就是磁盘访问速度。
因为 CPU 速度太快了,所以为了发挥 CPU 的速度优势,平衡这三者的速度差异,计算机体系机构、操作系统、编译程序都做出了贡献,主要体现为:
- CPU 使用缓存来中和和内存的访问速度差异
- 操作系统提供进程和线程调度,让 CPU 在执行指令的同时分时复用线程,让内存和磁盘不断交互,不同的 CPU 时间片 能够执行不同的任务,从而均衡这三者的差异
- 编译程序提供优化指令的执行顺序,让缓存能够合理的使用
2.并发的问题
https://zhuanlan.zhihu.com/p/197727299
-
更新丢失(也称为原子性问题)
-
降低性能,线程切换
-
可见性问题(多核CPU时代,多线程线程操作的是不同的 CPU 缓存,互相的缓存不可见)
-
-
死锁