版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

基于ucontext_t实现的非对称协程,本章对应源码:zhongluqiang/sylar-from-scratch at 4419dbda8cf40d9b9d3bb0b0b14242a4d1b8aa2c

协程概述


ucontext_t接口


sylar协程模块设计


sylar协程模块实现


注意事项


建议初学协程里,不要尝试深入x86/x64体系和汇编语言,只需要了解协程是什么,协程上下文和协程切换是怎么回事即可。使用ucontext系列接口实现协程功能。


非对称协程,每个线程的入口函数作为主协程,其他协程为子协程,协程只能在主协程和子协程之间进行切换,不能在子协程与子协程之间切换。所对,这个协程模块最大的一点限制是,子协程不能创建并运行子协程,所有的协程都只能由主协程进行创建并调用。这个限制在引入调度器后可以通过调度器接口来规避掉,在使用调度器时,协程可以通过向调度器添加调度任务的方式来启动新的协程。

...