协程的本质是控制流的主动让出(yield)和恢复(resume)机制
协程(Coroutine)可以理解为线程内部调度的最小单位, 是纯用户态的轻量级线程, 在不陷入内核的情况下进行上下文切换
协程的调度完全由用户控制, 协程拥有自己的寄存器上下文和栈,
协程调度切换时, 将寄存器上下文和栈保存到其他地方, 在切换回来的时候, 恢复先前保存的寄存器上下文和栈,
直接操作占没有内核切换的开销, 可以不加锁的访问全局变量, 所以上下文的切换非常快
进程和线程是内核级的被动调度, 协程是用户级的主动调度
对于操作系统来说只有进程和线程, 协程的控制由应用程序显式调度, 非抢占式
协程的切换非常快, 协程KB级别, 线程MB级别, 协程比线程更加轻量级