并发与并行的区别
2026年9月25日大约 1 分钟
并发(Concurrency)
多个任务交替轮流执行,看起来像 “同时” 在跑,不一定需要多个 CPU 核心。
单核 CPU 就可以实现并发。CPU 快速来回切换任务,一会儿处理 A 下单、一会儿处理 B 下单。
例子:同一个 CPU 核心,轮流切换处理多个下单请求。任务交替穿插跑,宏观上感觉是一起在处理,微观上同一时刻 CPU 只在跑其中一个。
可以是同一段代码(多个用户下单),也可以是不同代码(下单、提现来回切)。
并行(Parallelism)
真正同一时刻,多个任务在不同 CPU 核心上一起执行。
必须多核 CPU,多个核心各自干活,同一瞬间同时跑。
例子:CPU 核心 0 处理下单,CPU 核心 1 同时处理提现。两个任务在这一刻真正同时执行,互不抢占这一个核。
用生活化一句话记牢
- 并发:一个厨师,先后交替做多道菜。一会儿切菜,一会儿烧水。看起来几件事一起推进。
- 并行:两个厨师,各自灶台,同一时间分别做两道菜。
套到服务场景
- Swoole 协程属于并发:单个进程(单个线程)里面,大量协程轮流切换,IO 等待的时候让出 CPU,单核也能实现。并不是同一时刻一起跑。
- 开多个 FPM 进程,部署在多核机器上:多核可以做到并行,多个 CPU 核心同时处理不同请求;每个核心内部,依然是并发调度任务。
