尽管已分配工作,boost :: asio :: io_service run()返回?

时间:2014-07-07 15:12:04

标签: c++ boost boost-asio

阅读了Boost.Asio教程和文档,在我看来,以下main()函数不应该返回:

#include <boost/asio.hpp>

int main()
{
    boost::asio::io_service io_service;
    boost::asio::io_service::work work(io_service);

    boost::system::error_code ec;
    io_service.run(ec);

    std::cout << ec.value() << " - " << ec.message() << std::endl;

    return 0;
}

我已经分配了它的工作并期望run()阻塞,直到工作被销毁 - 在最小的可行演示中,直到run()返回后才会发生。

然而,程序立即返回,显示“0 - 成功”。这似乎不对。

我在一个单独的线程中使用io_service.run()尝试了一个更复杂的例子之后遇到了这个问题,而且也没有按预期工作。因此,检测和避免死锁情况的特殊情况似乎不太可能。

我做了一些根本错误的事吗?这是Ubuntu(14.04)Boost库中的错误吗?关于如何调试或找出问题的想法?

0 个答案:

没有答案