2022-05-07 内容
协程被抽象为了std::coroutine_handle<promise_type>
对象
对于单线程来说,协程可以通过co_yield提前返回,resume恢复运行,将一个长操作打散为多个短操作
2023-3-22 游戏中的协程
协程在游戏这种帧驱动中存在以下问题。
在第一帧的时候,Get了一个指针,在本帧的时候是保证能用的。之后yield再恢复可能已经第三帧了,第一帧获取的指针可能到了第三帧就垂悬了
例子如下
处理客户端RPC请求时在第一帧,这时通过RoleId获取了指向玩家数据A的指针,之后yield。
第二帧玩家下线,玩家数据A被删除
第三帧从yield恢复,这时指向玩家数据A的指针就是垂悬指针。
所以需要在使用协程后,将上文的所有指针、引用等可能失效的都重新获取。