【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题
2017-08-29 17:21
429 查看
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
没有任务时, 也会阻塞.
[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
没有任务时, 也会阻塞.
相关文章推荐
- 【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题
- 【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题
- 【Boost】boost库asio详解1——io_service::run函数无任务时退出的问题
- boost库asio详解2——io_service::run函数无任务时退出的问题
- 【boost学习】之boost::asio(5)——io_service::run函数无任务时退出的问题
- 关于asio中的io_service::run函数在没有任务时退出的问题
- 【Boost】boost库asio详解1——strand与io_service区别
- 【Boost】boost库asio详解3——io_service作为work pool
- 【Boost】boost库asio详解3——io_service作为work pool
- 【Boost】boost库asio详解3——io_service作为work pool
- 【Boost】boost库asio详解3——io_service作为work pool
- 【Boost】boost库asio详解3——io_service作为work pool
- 【Boost】boost库asio详解3——io_service作为work pool
- boost库asio详解3——io_service作为work pool
- boost::asio (4): io_service_strand详解
- 【Boost】boost库asio详解2——strand与io_service区别
- boost::asio-start(1): The basics of io_service详解
- boost库asio详解3——io_service作为work pool
- 【Boost】boost库asio详解1——strand与io_service区别
- Boost.asio的简单使用(timer,thread,io_service类)