线程与协程的区别
线程是系统级单位,适合并行处理;协程是用户级单位,适合高并发 I/O 处理。
协程依赖于某个线程。
| 项目 | 线程(Thread) | 协程(Coroutine) |
|---|---|---|
| 本质 | 操作系统调度的最小执行单元 | 用户态调度的轻量级线程 |
| 调度者 | 操作系统(内核) | 程序自身(用户空间调度器) |
| 开销 | 创建/切换较重(需系统调用) | 创建/切换极轻(函数调用级别) |
| 栈空间 | 每个线程拥有独立栈(如1MB) | 协程一般只占几KB~几十KB |
| 上下文切换 | 由 OS 执行,涉及寄存器/堆栈切换 | 用户程序中保存/恢复上下文 |
| 并发性 | 可并行(利用多核) | 单线程并发(并非并行) |
| 阻塞 | 阻塞会影响整个线程 | 协程可以挂起自己,不影响其他协程 |

浙公网安备 33010602011771号