易君召
易君召
发布于 2026-11-03 / 1 阅读
0

进程(Process) vs 线程(Thread)核心区别

一句话概括:进程是资源分配的最小单位,线程是 CPU 调度执行的最小单位;一个进程至少包含一个主线程,线程共享所属进程的资源。

对比项

进程

线程

资源归属

独立拥有:独立内存空间、文件句柄、堆、环境变量等

共享进程资源:同进程内所有线程共用进程地址空间、堆、文件描述符;私有只有栈、寄存器、局部变量

切换开销

大。切换时要换页表、刷新 TLB,保存完整进程上下文

很小。只需要保存少量寄存器、栈信息,不用切换地址空间

隔离性

强,进程之间相互独立;一个进程崩溃,一般不影响其他进程

弱,同进程内线程共享内存;任意一个线程崩溃,大概率导致整个进程挂掉

通信方式

IPC:管道、消息队列、共享内存、Socket、信号等,比较麻烦

直接读写共享变量,配合锁(mutex)、条件变量等;通信简单,但容易有竞态条件

创建成本

高,fork / 创建进程开销大

低,创建线程开销远小于进程

调度单位

不是 CPU 调度单位

操作系统 CPU 调度的基本单位

内存地址空间

每个进程有独立虚拟地址空间

没有独立地址空间,依附于进程的地址空间

补充通俗例子

把进程想象成一个独立工厂:

  • 工厂有自己的厂房、仓库、水电(内存、资源);工厂垮了,别的工厂不受影响。 线程就是工厂里的工人:

  • 多个工人共用同一个厂房、仓库;工人之间可以直接拿仓库里的东西(共享数据);一个工人出事,整个工厂停工。

两个常见延伸要点

  1. 多进程模型:适合高隔离场景,比如浏览器每个标签页单独进程,一个页面崩了不全部崩溃;缺点是资源占用高、通信麻烦。

  2. 多线程模型:适合 CPU 密集 / IO 密集任务,共享数据方便、切换快;缺点是共享资源带来并发安全问题(锁、死锁),同时有 GIL 这类限制(Python)。

快速记忆口诀

进程分资源,线程抢 CPU; 进程隔离开,线程一家人; 进程切换重,线程轻量跑。


本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。

原文链接 https://www.yijunzhao.cn/archives/process-vs-thread-core-differences

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/