我正在使用(单线程)aboost::asio:io_service
来处理大量 tcp 连接。对于每个连接,我使用一个deadline_timer 来捕获超时。如果任何一个连接超时,我就不能使用其他连接的任何结果。因此我想完全重新启动我的 io_service。我认为调用io_service.stop()
将允许调用队列中的“已完成”处理程序,并且会调用队列中的处理程序并出现错误。
但是,处理程序似乎保留在队列中,因此调用io_service.reset()
并稍后io_service.run()
恢复旧的处理程序。任何人都可以确认处理程序确实保留在队列中,即使在io_service.stop()
被调用后也是如此。如果是这样,完全重置 io_service 的可能性是什么,例如删除所有排队的处理程序?