cloudwu/skynet

为什么skynet.wait里生成session没有check?

Closed this issue · 1 comments

如题,我有一个服务使用多个socketchannel,其中有一个channel使用频率比较低,太久未使用对端会关闭连接,但是挂起的__wait_response要到下次使用重连的时候才会wakeup,期间其他channel的session已经回绕导致__wait_response找不到对应的协程,唤醒失败后会卡在while self.__dispatch_thread do.如果skynet.wait生成的session也确认一下是否冲突会解决这个问题

这个机制不是一开始的设计,是后来加的。 #1798

你可以按 timout 的做法改一下,再提交一个 pr :

https://github.com/cloudwu/skynet/blob/master/lualib/skynet.lua#L161-L170