uContext(#include<ucontext.h>)
- 数据结构
typedef struct ucontext_t
{
unsigned long __ctx(uc_flags);
struct ucontext_t *uc_link; // uc_link指向当前context 结束时待恢复的上下文
stack_t uc_stack; // context 使用的栈 初始化栈顶指针(context.uc_stack.ss_sp = stack;) 栈大小(context.uc_stack.ss_size = sizeof(stack);)
sigset_t uc_sigmask;
mcontext_t uc_mcontext;
} ucontext_t;
- int getcontext (ucontext_t *ucp); 获取当前协程的context 并保存到 ucp 指向的内存
- int setcontext (const ucontext_t *ucp); 设置ucp指向的context为运行上下文并开始执行。
- void makecontext (ucontext_t ucp, void (func) (void), int argc, ...);修改ucp指向的任务。
- int swapcontext (ucontext_t restrict oucp, const ucontext_t restrict ucp); swapcontext()实现将当前的context保存到oucp中,并切换到ucp指向context继续执行。