【发布时间】:2013-08-31 23:50:58
【问题描述】:
我正在使用(单线程)boost::asio:io_service 来处理大量 tcp 连接。对于每个连接,我使用一个deadline_timer 来捕获超时。如果任何一个连接超时,我就不能使用其他连接的任何结果。因此我想完全重新启动我的 io_service。我认为调用io_service.stop() 将允许调用队列中的“已完成”处理程序,并且会调用队列中的处理程序并出现错误。
但是,处理程序似乎保留在队列中,因此调用io_service.reset() 和稍后的io_service.run() 会恢复旧的处理程序。
即使在调用io_service.stop() 之后,任何人都可以确认处理程序确实保留在队列中。如果是这样,完全重置 io_service 的可能性是什么,例如删除所有排队的处理程序?
【问题讨论】:
标签: c++ boost boost-asio