它们都是因程序的并发执行程序而产生
一、进程
①、进程是资源分配的基本单位,程序运行时系统就会创建一个进程,例如打开qq应用就创建一个进程。
②、操作系统会为它分配专门的进程控制块
③、三种状态:就绪状态、执行状态、阻塞状态
二、线程
①、线程是程序执行时的最小单位,一个进程可以由很多个线程组成,但至少包含一个主线程,例如qq里有多个功能则多个线程
三、协程
①、协程是一种用户态的轻量级线程,它是线程更小的执行单元,它的调度完全由用户控制
四、进程与线程的区别
①、进程开销更大:进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多。
②、进程共享数据更复杂:同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式进行
③、进程健壮性更好:多线程程序只要有一个线程死掉,整个进程也死掉,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间,线程之间没有单独的地址空间。