探究coroutine(二)
previously
在上一篇我们简单了解了linux下的调用约定:每个CPU上有16个通用寄存器,其中6个在调用函数的时候用作参数传递,多余6个的参数通过栈来传递。进程的栈空间每调用一层函数就向低地址方向扩展一个栈帧。
这两篇文章的目的是讲清楚协程在线程的栈上切换的流程。本文分析两个开源项目:云风的coroutine和腾讯的libco。我们只关注其栈的切换逻辑。
coroutine
coroutine的地址为:cloudwu/coroutine 。 这个项目实现的非常简洁,核心就两个文件 coroutine.h
和coroutine.c
. 头文件提供的接口: