我正在使用一个相当简单的 boost::asio 设置,我从主线程调用 io_service.run() 。我有一个 tcp 解析器,并使用 async resolve 来查找地址。当查找失败时,我会在异步回调中抛出异常。我在主函数内部的 run() 调用之外捕获了这个异常。然后我在我的 io_service 实例(它是一个全局的)上调用 stop() 。但是,当 main() 返回时,程序会挂起。事实证明,它正在等待一个永远不会来自解析器服务的 exit_event_。
我不想挂在出口上。有什么我做错了吗?如果是这样,是什么?我在网上没有找到很多关于这些事情的讨论。我在 Windows 7/64 位上使用 boost 1.41.0。