什么是进程?什么是线程?什么是协程?
只说人话,只举例子
关系类比:
进程:多条生产线
线程:单条生产线上的多位工人
协程:单条生产线上的单个工人
特点类比:
进程:建设多条生产线,需要消耗资源最高,每条线存在1位线长,因跨生产线,许多信息不通,故彼此通信繁琐
线程:单条生产线上的多位工人,每个工人可以独立工作,但没有思考能力,所以每条生产线配置1名线长,线长同时间只能思考或者处理工人提出的1件事(CPU),故线程存在GIL锁。
协程:单条生产线上的单个工人,怎么提高工人的生产效率?当工人在等待(例如IO等待、sleep等待、完成任务)就切换处理其他事情。当其他事情遇到同类(IO等待、sleep等待、完成任务)就切换回原工作。
特例:多线程只开1条线程,那么就是协程,协程是多线程的特例
例如:单条生产线只有1名工人,这是特例
由于是单人工作,充分利用了等待时间,所以资源消耗最低
资源消耗:进程>线程>协程
通信便利:协程>线程>进程
同步、异步、阻塞、非阻塞、并发、并行关系和区别
同步与异步
功能:
小明去快递店取快递,快递员在寻找快递,小明傻傻一直在等待,什么也不做,就是同步。若小明在等待的时间去看手机,那么就是异步。
从小明的角度:等待时间去处理其他事情,就是异步。一直等待什么也不处理,就是同步。
阻塞与非阻塞
功能:
和同步与异步的功能一致,只是”同步与异步“是从顾客角度说,”阻塞与非阻塞“是从服务者角度说相同功能。
并发与并行
功能:
并发
并发是以顾客角度说明,可以接受多次请求。
同样以取快递为例,快递店门口有5个顾客,可以同时扫二维码取快递,这就是并发,就是可以同时接受多个请求,然后异步处理。
并行
就是物理学的并联,类似多进程,资源都是独立,互不干涉。