多线程和并发导致的编程陷阱很多,这些问题都是源于CPU架构的演进。从最早的单核单线程CPU到单核多线程,多核多线程,以及多路CPU的情况。
本文为个人(脑补)科普文,仅代表个人理解。
首先认识几个英文缩写
SMP Symmetric Multi-Processing 对称多处理结构的简称,是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。
主要特征就是:共享所有资源
服务器的多路CPU便是如此,CPU之间的共享内存的,但是通过处理器之间的点对点连接实现互访(mesh连接)。
CMP Chip multiprocessors 单芯片多处理器,也指多核心。其思想是将大规模并行处理器中的SMP集成到同一芯片内,各个处理器并行执行不同的进程。
主要特征:单个CPU,多个核心,各核心有独立的L1缓存,有共享的最底层缓存L3(有的只有L2)
现在几乎所有的台式计算机都使用这种多核CPU。服务器的架构属于SMP+CMP。
ASMP