您的位置:首页 > 其它

【Boost】boost库asio详解1——io_service::run函数无任务时退出的问题

2016-02-29 10:09 253 查看
io_service::work类可以使io_service::run函数在没有任务的时候仍然不返回,直至work对象被销毁。

[cpp] view
plain copy

 print?

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()执行结果:

[cpp] view
plain copy

 print?

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()的执行结果:

[cpp] view
plain copy

 print?

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

   

没有任务时, 也会阻塞.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: