如果源请求是通过 pollin 获取的,然后把请求丢到一个线程池去处理,在每个线程内部处理超时,这个是比较容易实现的
现在的场景是,源请求是通过 pollin 获取的,服务器同时还维护一个 socket 池,因此总共需要 poll N + 1 个 socket ;对于每一个源请求,需要检查这个 socket 池中的对应项有没有 pollin 事件:
在这种模式下,万一有个源请求等了一个小时也没有应答也是有可能的,所以最好设置一个超时
但是 poll 是 I/O 事件驱动的,超时不是一种事件,所以感觉要实现的话比较别扭,我能想到的一个方法是这样的:
还想到一个方法是这样的:
感觉这两种方法都不是特别理想,请问这类问题通常的解法是什么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.