进程:进程是系统进行资源分配的最小单位,每个进程都有自己的独立内存空间,不用进程通过进程间通信来通信,但是进程占据独立空间,比较重量级,所以上下文进程间切换开销比较大,但是比较稳定。
线程:是进程的实体,是cpu调度的最小单位,它比进程更小能独立运行的基本单位,线程基本不拥有系统资源,只占用一点运行中的资源(如程序计数器,一组寄存器和栈),但是它可以与同属于一个进程的其他线程共享全部资源,提高程序的运行效率,上下文切换,开销比较小,但是不够稳定,容易丢失数据,形成死锁。
协程:是更小的执行单位,是一种轻量级的线程,协程的切换只是单纯的操作cpu的上下文,所以切换速度特别快,且消耗小,线程切换从系统层面远不止保存和恢复cpu上下文这么简单,操作系统为了程序运行的高效性,每个线程会有缓存的数据,操作系统换回做回复数据的操作,实际上是消耗性能的。