互斥锁,同步锁,临界区,互斥量,信号量,自旋锁之间联系是什么?- 胖君的回答 - 知乎
https://www.zhihu.com/question/39850927/answer/242109380
在同一个“真人”类比体系里,可以这样想——
概念 拟人化比喻 关键特点
[[进程]](Process)一个员工 + 一间独立办公室:他有自己的桌面、文件柜、钥匙,别人进不来。彼此隔离,资源(内存空间)不共享。
[[线程]](Thread)这个员工忽然分出几位“影分身”:大家共用同一间办公室和资料柜,但可以同时动手。共享进程资源,操作系统负责在这些“分身”之间切换或并行运行。
[[协程]](Coroutine)同一位员工只要觉察到“先做 A、标记进度 → 做 B、再切回 A”就能自己“切换角色”。没人催他,全靠自觉。完全由程序自己决定何时暂停/恢复,开销极小,依托 单个线程。
换句话说
• 线程=“一个人 + 若干同步工作的分身”,共享记忆、工具,但仍需操作系统协调,切换成本比协程高、比进程低。
• 协程=“一个人手里只有一双手,但他会主动在不同任务之间来回切换”,无需 OS 介入,切换最轻。
这样就能把三者的关系放在同一幅图里:
进程像独立员工 → 线程像同员工的分身协作 → 协程像员工自己在脑中切换注意力。
希望这个比喻让你一眼就能抓住它们的本质区别!