【发布时间】:2014-01-08 23:49:30
【问题描述】:
我在一个具有异常处理的循环中执行以下代码。
using namespace boost::network;
http::client client;
http::client::request request("https://testserver.com/");
request << header("Connection", "close");
http::client::response response = client.get(request);
std::string strOutput = body(response);
代码运行良好,但是如果我禁用网络接口来测试我的软件以防网络故障,我会收到此错误,
在抛出 'boost::exception_detail::clone_impl >' 的实例后调用终止 what(): boost thread: 尝试加入自身:避免资源死锁
我似乎无法捕捉到这个错误。此代码 24/7 执行状态检查,因此它很可能会找到出现网络错误的时间。最糟糕的是,它可能在第 1、2、3 次或第 4 次尝试后失败。我真的很想避免自己使用套接字实现 HTTP 协议套接字,但我可能需要这样做。有什么想法吗?
【问题讨论】:
-
您确定这是确切的错误消息吗?看来尖括号不平衡。
-
该错误似乎与上面的代码无关。
ioservice和 ioservice 线程是如何创建的?我没有使用http,但我假设它基于boost::asio.. -
库的作者发现解决方案是使用相同的客户端实例,而不是每次都创建/销毁它。
标签: c++ boost cpp-netlib