最近做了个项目,项目里面包括游戏主线程和战斗线程,进行压测的时候发现,游戏主线程卡在某个阶段不往下走,仔细排查才发现问题:
1.游戏超时时会向战斗线程的channel发送超时通知
2.战斗线程会每一帧判断战斗是否结束,并在结束时向主线程channel发送结束通知
那么这样造成的问题就是有可能在主线程往战斗线程发送超时通知时,战斗线程又向主线程发送结束通知,这样造成了一个互相卡死的局面
解决的办法也很简单,channel增加缓冲区,这样哪怕其所在线程没有及时处理该channel,也不会造成发送者卡在那一步。