写代码常听人说什么“多进程”“多线程”“协程”,听着像绕口令。其实换个比喻就通了:工厂、工人、流水线。

一、进程 = 一家工厂

进程是操作系统分配资源的基本单位,就像一家独立工厂:有自己的地皮(内存空间)、自己的仓库、自己的账本。

工厂之间互不相干,A 厂着火不影响 B 厂(进程崩溃不拖垮别的)。但两家厂之间要交换东西,得走“专门的货车通道”(进程间通信 IPC),麻烦且慢。

二、线程 = 工厂里的工人

一家工厂里可以有很多工人(线程),他们共享同一块地皮和仓库(共享内存),所以互相传个工具很方便。

但麻烦也在这:两个工人抢同一台机器容易出乱子(线程安全问题),得加锁(mutex)排队用。

进程是工厂,线程是工人

三、协程 = 工人手里的多条流水线

一个工人干活时,常常要等——比如等水烧开。

协程就是这个工人聪明地利用等待时间:水没开就先去切菜,水开了再回来倒水。它不真的多雇人,而是在一个工人内部自己切换任务,几乎零成本。

所以协程特别适合“大量等待”的场景(比如高并发网络请求),一个人就能同时照看成千上万件事。

四、一张表对比

工厂/工人 切换成本 共享 适合
进程 独立工厂 高(要搬地皮) 不共享 稳,互不影响
线程 同厂工人 中 共享内存 CPU 密集、真并行
协程 工人内流水线 极低 同线程 高并发、多等待

一句话:进程是“分开的工厂”,线程是“厂里的人”,协程是“一个人见缝插针地多线操作”——越往右越轻、越省,但也越需要小心配合。