问题描述
在调试游戏服务器时,我们发现 session_id_coroutine 表中有时会出现同一个协程对象被映射到多个不同的会话ID的情况。这似乎是一个问题,因为每个协程在任意时刻应该只与一个会话ID关联。
问题影响
由于发生冲突的是协程是循环定时器协程,在定时器内发生的挂起行为,似乎会被提前唤醒,猜测是coroutine 被提前 resume,出现状态错乱
确认已排除的因素
- 项目中未直接访问或修改 session_id_coroutine
- 所有调用均使用 Skynet 提供的标准接口(如 skynet.sleep, skynet.call, skynet.timeout 等)
- 问题并非频繁发生
现场截图
