boost::asio::io_service::work类
来源:互联网 发布:mac搜狗输入法换皮肤 编辑:程序博客网 时间:2024/05/16 12:02
work是一个很小的辅助类,只支持构造函数和析构函数。(还有一个get_io_service返回所关联的io_service)
构造一个work时,outstanding_work_+1,使得io.run在完成所有异步消息后判断outstanding_work_时不会为0,因此会继续调用GetQueuedCompletionStatus并阻塞在这个函数上。
而析构函数中将其-1,并判断其是否为0,如果是,则post退出消息给GetQueuedCompletionStatus让其退出。
因此work如果析构,则io.run会在处理完所有消息之后正常退出。work如果不析构,则io.run会一直运行不退出。如果用户直接调用io.stop,则会让io.run立刻退出。
特别注意的是,work提供了一个拷贝构造函数,因此可以直接在任意地方使用。对于一个io_service来说,有多少个work实例关 联,则outstanding_work_就+1了多少次,只有关联到同一个io_service的work全被
析构之后,io.run才会在所有消息处 理结束之后正常退出。
构造一个work时,outstanding_work_+1,使得io.run在完成所有异步消息后判断outstanding_work_时不会为0,因此会继续调用GetQueuedCompletionStatus并阻塞在这个函数上。
而析构函数中将其-1,并判断其是否为0,如果是,则post退出消息给GetQueuedCompletionStatus让其退出。
因此work如果析构,则io.run会在处理完所有消息之后正常退出。work如果不析构,则io.run会一直运行不退出。如果用户直接调用io.stop,则会让io.run立刻退出。
特别注意的是,work提供了一个拷贝构造函数,因此可以直接在任意地方使用。对于一个io_service来说,有多少个work实例关 联,则outstanding_work_就+1了多少次,只有关联到同一个io_service的work全被
析构之后,io.run才会在所有消息处 理结束之后正常退出。
0 0
- boost::asio::io_service::work类
- boost::asio::io_service::work类
- io_service类 boost asio
- boost.asio服务器使用io_service作为work pool
- boost.asio服务器使用io_service作为work pool
- boost.asio服务器使用io_service作为work pool
- boost.asio服务器使用io_service作为work pool
- boost::asio::io_service和io_service::work和boost::thread_group配合使用
- boost::asio::io_service和io_service::work和boost::thread_group配合使用
- boost::asio::Io_service
- boost::asio::Io_service
- boost::asio::Io_service
- boost::asio::Io_service
- boost::asio 之io_service
- boost::asio::Io_service strand
- boost::asio::io_service(之一)
- Boost::asio io_service
- Boost::asio io_service
- datepicker的汉化(sencha touch)
- K&R The C programming language1
- tcp连接探测Keepalive和心跳包
- ios网络请求 get——post 区别
- Ubuntu下crontab命令的用法
- boost::asio::io_service::work类
- maven(二):学习笔记
- LeetCode | Valid Parentheses(括号匹配)
- 第24条:消除非受检警告
- IOS7新特性-AVSpeechSynthesisVoice
- C++类默认函数
- POJ1265Area(计算几何)
- Android应用开发FaceDetector(人脸检测)
- qt延时 QT中简单的延时办法