Skip to content

第 02 课 · 进程与线程

搞清「谁在跑」:部门是进程,部门里的人是线程。

作者:曹宇春


先记住这个类比

  • 进程 = 一个完整部门:有工牌(PID)、有自己的办公桌(内存空间)、默认 不翻别的部门桌子
  • 线程 = 部门里的员工:共享同一张大桌子,换人成本更低

打开 Chrome ≈ 成立「浏览器事业部」
打开 Cursor ≈ 成立「开发部」
两个部门 默认互不干扰


正式概念(人话版)

进程线程
类比整个部门部门员工
内存各自独立共享本进程资源
创建成本
崩溃影响通常只死本部门一员搞砸可能拖垮整部门
通信要正式流程(IPC)同桌说话(共享内存要注意安全)

为什么 Chrome 开很多进程?

Chrome 倾向 标签 / 插件多进程:某个网页卡死 ≈ 只关那个小隔间,不全公司停摆。
代价:隔间多 → 占桌面(内存)多。所以标签狂开会感觉「内存爆了」。

Load Average(负载)

「平均有多少人在排队等前台工位」。
8 核机器上 load ≈ 2,通常表示 还有余量;load 长期远高于核数,才像前台门口排长龙。


在你电脑上看一眼

bash
# 进程列表(按 CPU 粗排可自行接 sort)
ps aux | head -20

# 瞬间快照:负载、空闲比例(macOS)
top -l 1 -n 5 -stats pid,command,cpu,mem

# 开机多久、负载三数字(1/5/15 分钟)
uptime

你会看到:进程数可以有 几百,线程数上千——不等于 CPU 一直 100%。很多在 睡眠等 I/O(等档案室),没占工位。


开发里什么时候用得上

  • Electron 应用(Cursor、Cherry Studio)= 一个品牌,多个 Helper 进程(主进程、渲染、GPU、网络)
  • 多开 Agent 改同一目录 = 两个部门改同一份原件 → 用 git worktree 复印再改
  • 杀进程:kill = 请部门礼貌下班;kill -9 = 保安清场(能不用就不用)

练习

  1. ps 找到 CursorGoogle Chrome,数一下相关进程大概有几个。
  2. 解释:为什么「进程很多」但「CPU 空闲还有一半」仍然可能?

小结

  • 进程隔离强、开销大;线程共享桌、切换轻
  • Chrome / Electron 用多进程换稳定性,用内存买单
  • Load 是排队人数,不是「卡顿唯一真相」

下一课:桌面与仓库——内存为什么让电脑变慢。

© 曹宇春 · 个人学习整理,欢迎交流