从计算机的发展上,这概念从大到小的顺序是
程序->进程->线程->协程
基础概念
- 进程:系统进行资源调度和分配的的基本单位
- 线程:线程是操作系统调度与执行的基础单位
- 协程:又称为用户级线程、微线程
核心点
进程
- 是操作系统资源调度的基础单位单元;
- 进程是能独立运行、独立获取资源的基本单位
线程
- 是操作系统最小调度单元;
- 创建、销毁、调度交由内核完成,cpu 需完成用户态与内核态间的切换;
- 可充分利用多核,实现并行.
协程
- 与线程存在映射关系,为 M:1;
- 创建、销毁、调度在用户态完成,对内核透明,所以更轻;
- 从属同一个内核级线程,无法并行;一个协程阻塞会导致从属同一线程的所有协程无法执行.
生活例子 CPU 电力 进程 工厂 线程 工厂部门
假设这个城市就一个工厂(进程)、 一个工厂部门(线程)、一条电线(单核)的情况。 这时候工厂(进程) 中的一个工厂部门(线程),电线(单核)可以完全为他工作。
但是现在出现问题了,现在任务量太大了,工厂就划分了2个工厂部门(线程),让这2个部门同时干活,但是现在只有一条电线(单核),因此这2个部门不得不轮流用电(CPU时间片)。
但是现在又出现问题了,老板发现切换电源需要有资质的电工来操作(内核),每次切换的开销太大了。因此把这些让一个工厂部门(线程)长期通电,自己内部让原先2个部门的人轮流进去通电的工厂部门内工作。应为这是工厂内部的人员(用户态)调度,不涉及电工(内核态)。切换的代价相对较小,这就是协程