从计算机的发展上,这概念从大到小的顺序是程序->进程->线程->协程

基础概念

  • 进程:系统进行资源调度和分配的的基本单位
  • 线程:线程是操作系统调度与执行的基础单位
  • 协程:又称为用户级线程、微线程

核心点

进程

  1. 是操作系统资源调度的基础单位单元;
  2. 进程是能独立运行、独立获取资源的基本单位

线程

  1. 是操作系统最小调度单元;
  2. 创建、销毁、调度交由内核完成,cpu 需完成用户态与内核态间的切换;
  3. 可充分利用多核,实现并行.

协程

  1. 与线程存在映射关系,为 M:1;
  2. 创建、销毁、调度在用户态完成,对内核透明,所以更轻;
  3. 从属同一个内核级线程,无法并行;一个协程阻塞会导致从属同一线程的所有协程无法执行.

生活例子 CPU 电力 进程 工厂 线程 工厂部门

假设这个城市就一个工厂(进程)、 一个工厂部门(线程)、一条电线(单核)的情况。 这时候工厂(进程) 中的一个工厂部门(线程),电线(单核)可以完全为他工作。

但是现在出现问题了,现在任务量太大了,工厂就划分了2个工厂部门(线程),让这2个部门同时干活,但是现在只有一条电线(单核),因此这2个部门不得不轮流用电(CPU时间片)。

但是现在又出现问题了,老板发现切换电源需要有资质的电工来操作(内核),每次切换的开销太大了。因此把这些让一个工厂部门(线程)长期通电,自己内部让原先2个部门的人轮流进去通电的工厂部门内工作。应为这是工厂内部的人员(用户态)调度,不涉及电工(内核态)。切换的代价相对较小,这就是协程