Boost Asio dispatch()与post()的区别
post()会将Handler加入到任务队列中,然后在调用了run()、run_one()、 poll()、 poll_one()的线程中执行。
dispatch()会先进行判断,如果执行dispatch的线程之后就会调用run()、run_one()、 poll()、 poll_one(),那么直接在当前线程执行。否则同post()。
官方解释如下:
io_service::post
Request the io_service to invoke the given handler and return immediately.
This function is used to ask the io_service to execute the given handler, but without allowing the io_service to call the handler from inside this function.
The io_service guarantees that the handler will only be called in a thread in which the run(), run_one(), poll() or poll_one() member functions is currently being invoked.
io_service::dispatch
Request the io_service to invoke the given handler.
This function is used to ask the io_service to execute the given handler.
The io_service guarantees that the handler will only be called in a thread in which the run(), run_one(), poll() or poll_one() member functions is currently being invoked. The handler may be executed inside this function if the guarantee can be met.
Boost Asio dispatch()与post()的区别相关推荐
- boost boost::asio::read socket.read_some 区别
boost boost::asio::read 尝试读一定数量的字节,直到读到为止,或者出错 socket.read_some 读一下socket,读到多少算多少 带async的类似 出处:http: ...
- boost asio io_service学习笔记
转自:http://hi.baidu.com/jrckkyy/blog/item/e86835d61e60722506088b6a.html 构造函数 构造函数的主要动作就是调用CreateIoCom ...
- Boost asio 官方教程简介
1. 概述 本章介绍了 Boost C++ 库 Asio,它是异步输入输出的核心. 名字本身就说明了一切:Asio 意即异步输入/输出. 该库可以让 C++ 异步地处理数据,且平台独立. 异步数据处理 ...
- Boost.ASIO简要分析-4 多线程
4. 多线程 一般情况下,服务端开启一条线程做io_service::run()工作就足够了.但是,有些情况下可能会变得很糟糕. 从之前的分析,我们知道异步操作的一个关键步骤就是io_service回 ...
- boost::asio::deadline_timer(理解)
并发与并行: 并发和并行从宏观上来讲都是同时处理多路请求的概念.但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同一时间间隔内发生. 1.Timer.1 - 使 ...
- boost asio 学习
本章节为io_service添加任务,并且区分dispatch与post的区别.如果说io_service是asio库的大脑,那么post与dispatch就是asio库的手和脚. #include ...
- boost asio 应用方法学(二)——深入框架
要用好它,就必须先了解它,而且不能停止于表面,必须深入到内部.而了解一件事物,先要了解它的框架,再了解它的细节.了解了框架,我们就有了提纲挈领的认识. 关于 boost asio 框架结构,在其文档中 ...
- boost::asio译文
boost::asio译文 Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布( ...
- boost asio 异步实现tcp通讯
一.前言 boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的.而tcp通讯是项目当中经常 ...
- Boost.Asio技术文档汇总
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_ ...
最新文章
- cv2.circle函数
- websocket receive方法内 有循环怎么退出_认识HTML5的WebSocket
- 从“不务正业”到“回归本行”,“中年”雅戈尔的偶然与必然
- myeclipse + tomcat 项目自动部署
- 五十六、教用Python中的turtle海龟画图(上篇)
- JMetro版本11.6.5和8.6.5发布
- C/C++中NULL指针
- 前端学习(1857)vue之电商管理系统电商系统之配置api接口服务器并用postman调试接口
- Linux Shell脚本入门教程系列之(二)第一个shell脚本
- 2017.10.10 杀人游戏 思考记录
- 从h264码流中获取图像的宽高---版本1 (移植于ffmpeg)
- 十多年前的 Adobe ColdFusion 漏洞被用于勒索攻击
- linux下文本处理
- Java访问剪切板API控制台输出莫名异常
- 博图/博途(TIA)V13 V14 V15 V16 软件安装教程,适用于新手的傻瓜式安装方法,强推!!!!
- 采用WPF开发第二版OFD阅读器,持续完善中,敬请期待
- 天池大数据竞赛 Spaceack带你利用Pandas,趋势图与桑基图分析美国选民候选人喜好度
- leetcode:94. 二叉树的中序遍历
- 6.13编一程序,将两个字符串连接起来,不要用strcat函数。
- 神武4最新服务器,神武4手游 角色转服扩大限服范围