C++中的协程(下)

ucontext协程的封装

前面介绍了unix自带的ucontext相关函数,现在记录一下我们实际项目中的使用。

我们的项目中,每个玩家在登陆时创建玩家对象CHZUser,同时通过SVR_BASE::co_create函数创建一个协程上下文对象(后面简称协程对象),协程对象的执行函数是该玩家的消息循环函数CHZUser::message_loop,

enum CoroutineStatus_t
{
    emCoroutine_closed    =0,    ///< 关闭的
    emCoroutine_WaitRun,    ///< 等待执行
    emCoroutine_Runing,        ///< 正在执行
    emCoroutine_Message,    ///< 等着消息
    emCoroutine_IOComplete    ///< 等待IO完成
};

协程的五个状态