并发和并行 - 图1

    1. 并行化处理:现在的个人计算机动辄拥有十来个核心( M1 Max/Intel 12 代),如果使用串行的方式那真是太低效了,因此我们把各种任务简单分成多个队列,每个队列都交给一个 CPU 核心去执行,当某个 CPU 核心没有任务时,它还能去其它核心的队列中偷任务,这样就实现了并行化处理
    2. 单核心并发:早期只有一个CPU核心时,任务时怎么处理的呢?并发解君愁。这里还得提到操作系统的多线程,操作系统多线程+CPU 核心,实现了现代化的多任务操作系统。在OS级别,多线程负责管理任务队列,可以简单认为一个线程管理着一个任务队列,然后线程之间还能根据空闲度进行任务调度。我们的程序只会跟OS线程打交道,并不关心CPU到底有多少个核心,真正关心的只是OS,当线程把任务交给CPU核心去执行时,如果只有一个CPU核心,那么它就只能同时处理一个任务
    3. 多核心并行:当核心增多到 N 时,操作系统同时在进行的任务肯定远不止 N 个,这些任务将被放入 M 个线程队列中,接着交给 N 个 CPU 核心去执行,最后实现了 M:N 的处理模型,在这种情况下,并发与并行是同时在发生的,所有用户任务从表面来看都在并发的运行,但实际上,同一时刻只有 N 个任务能被同时并行的处理