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

[cpp] view plaincopy print?
  1. void test_asio_nowork()
  2. {
  3. boost::asio::io_service ios;
  4. PRINT_DEBUG("ios before");
  5. ios.run();
  6. PRINT_DEBUG("ios end");
  7. }
  8. void test_asio_work()
  9. {
  10. boost::asio::io_service ios;
  11. // 增加一个work对象
  12. boost::asio::io_service::work work(ios);
  13. PRINT_DEBUG("ios before");
  14. // 当没有任务时,ios.run()也不会马上返回
  15. ios.run();
  16. PRINT_DEBUG("ios end");
  17. }

test_asio_nowork()执行结果:

[cpp] view plaincopy print?
  1. 2013-01-05 22:43:19 334 [4868] DEBUG - ios before
  2. 2013-01-05 22:43:19 341 [4868] DEBUG - ios end

test_asio_work()的执行结果:

[cpp] view plaincopy print?
  1. 2013-01-05 22:43:48 514 [7852] DEBUG - ios before

没有任务时, 也会阻塞.

【Boost】boost库asio详解2——io_service::run函数无任务时退出的问题相关推荐

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

    io_service::work类可以使io_service::run函数在没有任务的时候仍然不返回,直至work对象被销毁. [cpp] view plain copy  print? void t ...

  2. 【Boost】boost库asio详解3——io_service作为work pool

    无论如何使用,都能感觉到使用boost.asio实现服务器,不仅是一件非常轻松的事,而且代码很漂亮,逻辑也相当清晰,这点上很不同于ACE. 使用io_service作为处理工作的work pool,可 ...

  3. 【Boost】boost库asio详解9——TCP的简单例子2

    客户端: // Client.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include <iostream> #inclu ...

  4. 【Boost】boost库asio详解8——TCP的简单例子1

    摘于boost官网的几个例子, 做了点小修改, 笔记之. 同步客户端 [cpp] view plain copy  print? void test_asio_synclient() { typede ...

  5. 【Boost】boost库asio详解7——boost::asio::buffer用法

    1. asio::buffer常用的构造方法 asio::buffer有多种的构造方法,而且buffer大小是自动管理的 1.1 字符数组 [cpp] view plain copy  print? ...

  6. 【Boost】boost库asio详解4——deadline_timer使用说明

    deadline_timer和socket一样,都用io_service作为构造函数的参数.也即,在其上进行异步操作,都将导致和io_service所包含的iocp相关联.这同样意味着在析构 io_s ...

  7. 【Boost】boost库asio详解2——strand与io_service区别

    [cpp] view plain copy  print? namespace { // strand提供串行执行, 能够保证线程安全, 同时被post或dispatch的方法, 不会被并发的执行. ...

  8. 【Boost】boost库asio详解1——strand与io_service区别

    namespace {// strand提供串行执行, 能够保证线程安全, 同时被post或dispatch的方法, 不会被并发的执行. // io_service不能保证线程安全boost::asi ...

  9. 【Boost】boost库asio详解9——UDP的简单例子1

    服务器: #include "stdafx.h" #include <iostream> #include <boost/asio.hpp> #includ ...

最新文章

  1. sqlserver清除日志
  2. cmd文件打开闪退_批处理闪退、运行中断等问题的处理
  3. 这样也可以,insert,,
  4. python中list是什么意思_python中list和list [:]有什么区别?
  5. JAVA程序设计----java面向对象基础(下)
  6. python 倒叙 数组_Python函数合集:68个内置函数请收好!
  7. H5 video 开发问题及相关知识点
  8. HH SaaS电商系统的销售订单毛利润模块设计
  9. Spring整合Struts2的两种方式
  10. jsp中文乱码问题 个人感觉比较有用
  11. php中联合运算符,PHP-串联运算符
  12. [bzoj 1861][zjoi2006] 书架
  13. linux下运行二进制文件
  14. 很多网友反映QQ被盗
  15. c++语言计算圆周率,计算圆周率的C++程序(30000位)
  16. 智能穿戴:致我们触手可及的未来?
  17. 服务器断电mysql文件丢失_服务器断电了怎么恢复数据?
  18. c语言笔记本无法读取鼠标,USB鼠标失灵了怎么办 电脑无法识别USB鼠标【详解】...
  19. WINCE 睡眠与唤醒
  20. 模拟炒股服务器响应错误,模拟炒股常见问题

热门文章

  1. 超融合服务器虚拟化优缺点,超融合是什么 意思?为什么必须是软硬件一体?...
  2. oauth过滤login_OAuth2AuthenticationProcessingFilter资源认证服务器过滤器
  3. 微信python天天学_刚学Python一礼拜!我就能模拟登录微信公众号!我是天才吧!...
  4. Android10剪贴板,剪纸堆 Clip Stack - 轻量级剪贴板管理程序(支持 Android 10)
  5. ssd测试软件cy,目标检测实践_tensorflow版SSD模型测试
  6. 声音大小与振幅的关系_原来声音的属性有这三种!
  7. 四路服务器芯片组,四路服务器主板配置
  8. 基于ESP32的竞赛裁判系统功能调试-与微机通讯
  9. 2021年春季学期-信号与系统-第十一次作业参考答案-第一小题
  10. 电磁炉线圈初步谐振实验 - 无线信标线圈