Skip to content

Latest commit

 

History

History
17 lines (13 loc) · 983 Bytes

协程.md

File metadata and controls

17 lines (13 loc) · 983 Bytes

协程

协程的本质是控制流的主动让出(yield)和恢复(resume)机制

协程(Coroutine)可以理解为线程内部调度的最小单位, 是纯用户态的轻量级线程, 在不陷入内核的情况下进行上下文切换

协程的调度完全由用户控制, 协程拥有自己的寄存器上下文和栈, 
协程调度切换时, 将寄存器上下文和栈保存到其他地方, 在切换回来的时候, 恢复先前保存的寄存器上下文和栈,
直接操作占没有内核切换的开销, 可以不加锁的访问全局变量, 所以上下文的切换非常快

进程和线程是内核级的被动调度, 协程是用户级的主动调度
对于操作系统来说只有进程和线程, 协程的控制由应用程序显式调度, 非抢占式
协程的切换非常快, 协程KB级别, 线程MB级别, 协程比线程更加轻量级

参考