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完成
};
协程的五个状态