进程:
进程是系统进行资源分配的最小单位,每个进程都有自己独立的内存空间。进程占据独立你空间,比较重量级,所以上下文进程间的切换比较消耗资源,但是稳定安全。
线程:
线程是进程的一个实体,是CPU进行调度的最小单位,他是比进程更小能独立运行的单位,线程基本不拥有系统资源,只占用一点运行中的资源如程序计数器,一组寄存器和栈。但是他可以与同属于一个进程的其他线程共享全部的数据,提高程序的运行速率,上下文切换快,开销比较小。但是不够稳定,容易丢失数据,形成死锁。
协程:
是更小的执行单位,是一种轻量级的线程,协程的切换只是单纯的操作CPU的上下文,所以切换速度特别快,且消耗性能小。协程和操作系统没有关系,是程序员自己实现的,上下文的切换都是在一跳主线上,相当于两个函数互相切换,速率非常快,而且耗能特别小。