虽然在工作时为客户端/服务器系统构建单元测试,但在我关闭所有活动处理程序(我知道)后,我遇到了io_service未释放的问题。
经过一天的代码搜索后,我遇到了错误的处理程序,该处理程序尚未集成到我的客户端关闭程序中。
我的问题是:是否有一种简单的方法可以在boost io_service中列出当前活动的处理程序?如果没有,为什么不呢?
任何见解都将受到赞赏。
答案 0 :(得分:1)
有一些问题:
我不知道这些是否是boost :: asio的具体原因,但这些原因突然出现在我身上。
要解决实际问题,析构函数和范围是您的朋友。我发现在高级对象(例如套接字侦听器)中有一个句柄容器很有用,当你想要关闭时,让它们超出范围。我发现shared_ptr很好,但你可以使用各种变种。
如果必须在要停止的每个对象上调用stop()
方法,那么您将忘记一些事情。让析构函数完成工作。