【问题标题】:cpp-netlib issue, terminate called after throwing an instance of 'boost::exception_detail::clone_implcpp-netlib 问题,在抛出 'boost::exception_detail::clone_impl 实例后调用终止
【发布时间】: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


【解决方案1】:

库的作者发现解决方案是使用相同的客户端实例,而不是每次都创建/销毁它

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 2018-01-06
    • 2017-03-08
    相关资源
    最近更新 更多