浮萍晓生的开发日志

记录学习的旅程,把握可预见的未来

导航

io_service::run函数无任务时退出的问题

Posted on 2014-02-27 14:43  浮萍晓生  阅读(465)  评论(0)    收藏  举报

io_service::work类可以使io_service::run函数在没有任务的时候仍然不返回,直至work对象被销毁。

 

void test_asio_nowork()
{
    boost::asio::io_service ios;

    PRINT_DEBUG("ios before");
    ios.run();
    PRINT_DEBUG("ios end");
}

void test_asio_work()
{
    boost::asio::io_service ios;
    // 增加一个work对象
    boost::asio::io_service::work work(ios);

    PRINT_DEBUG("ios before");
    // 当没有任务时,ios.run()也不会马上返回
    ios.run();
    PRINT_DEBUG("ios end");
}

 

test_asio_nowork()执行结果:

2013-01-05 22:43:19 334 [4868] DEBUG - ios before
2013-01-05 22:43:19 341 [4868] DEBUG - ios end

test_asio_work()的执行结果:

2013-01-05 22:43:48 514 [7852] DEBUG - ios before