进程和线程的区别?
发布于
一、定义
- 进程:程序运行的实例,资源分配的基本单位,有独立地址空间。
- 线程:进程内的执行单元,CPU 调度的基本单位,共享进程资源。
二、对比
| 维度 | 进程 | 线程 |
|---|---|---|
| 资源 | 独立地址空间 | 共享进程资源 |
| 切换开销 | 大(切换页表、TLB) | 小 |
| 通信 | IPC(管道、消息队列、共享内存) | 共享内存(需同步) |
| 健壮性 | 一个崩不影响其他 | 一个崩整个进程崩 |
三、线程切换开销
线程切换只需要保存/恢复寄存器、栈指针;进程切换还要切换页表、刷新 TLB,开销大得多。
四、协程
用户态轻量级线程,由程序自己调度,不依赖内核,切换开销极小。适合高并发 I/O 场景。