进程、线程和协程的简单对比
举例:一个老板开一个工厂生产剪刀
①老板花费一定财力物力制作一条生产线,生产线上有很器件及材料。这些所有为了生产剪刀的资源叫:进程。
②只有生产线不能进行生产,老板找到工人进行生产,这个工人能利用这些资源一步步将剪刀生产出来,做事情的工人叫:线程。
③为提高生产效率,老板提出a、b、c三种方法:
a.老板在这个生产线多招工人一起生产剪刀,效率成倍增长叫:单进程,多线程。
b.老板发现一条生产线资源有限,这条生产线上工人不是越多越好。他花财力物力重新购置了另外一条生产线,再招工人,效率提高叫:多进程,多线程。
c.现在有多条生产线,每条生产线的多个工人(程序是多进程,每个进程有多个线程),为提高生产效率规定,员工在上班临时无事或等待某些条件(比如等另一个工人完成某道工序他才能再次工作),这个员工就利用这个时间做其他的事情,即:如果一个线程等待某些条件,可以充分利用这个时间做其他的事情叫:协程。
- 进程是资源分配的单位。
- 线程是操作系统调度的单位。
- 进程切换任务需要的资源最大,效率很低。
- 线程切换需要的资源一般,效率一般。
- 协程切换任务资源很小,效率很高。
- 多进程,多线程根据CPU的核数不一样,可能是并行的,但是协程在一个线程中,所以是并发。