boost asio 中io_service stop函数注意
2016-05-20 14:51
190 查看
不要期待stop能停止run线程退出,如果任务队列执行的时间较长,只有任务执行完成之后,run线程才真正退出;stop函数的意义是阻止任务队列接收外面新的任务,比如stop之后再post任务,此时post无效。假如stop之后任务队列还有一条未执行完的任务,在此任务执行完之前外面析构或是反初始化此条任务需要使用的实例对象,当然会产生core。所以不能想当然认为stop就是run线程退出了,让任务队列里面任务不再执行,那是不行的。stop阻止任务队列接收新任务,并在执行完成之后退出run线程,若已存在任务队列中的任务一直无法执行完,则无法退出run线程。
不要期待stop能停止run线程退出,如果任务队列执行的时间较长,只有任务执行完成之后,run线程才真正退出;stop函数的意义是阻止任务队列接收外面新的任务,比如stop之后再post任务,此时post无效。假如stop之后任务队列还有一条未执行完的任务,在此任务执行完之前外面析构或是反初始化此条任务需要使用的实例对象,当然会产生core。所以不能想当然认为stop就是run线程退出了,让任务队列里面任务不再执行,那是不行的。stop阻止任务队列接收新任务,并在执行完成之后退出run线程,若已存在任务队列中的任务一直无法执行完,则无法退出run线程。
相关文章推荐
- Centos7 安装gitlab 8.7.5
- linux、windows中ping大数据包的命令格式
- openpyxl 读写Excel Workbook
- Hadoop项目之Cloudera 5.6.0.1(CDH)的安装部署
- shell脚本里怎样判断某个字符串是否为空
- Linux如何查看进程等常用命令
- 域名,网站名,URL,URI,端口
- Apache activemq example
- VS2010+Opencv-2.4.10环境配置
- 运行tomcat6w.exe ,提示 指定的服务未安装 unable to open the service 'tomcat6'
- 秒杀系统架构优化思路
- 《Linux驱动》iTop4412开发板LCD驱动 详细分析 (三)
- docker常用命令
- eclipse 远程调试 tomcat
- 每日一linux命令(1)-------ls
- NSRunLoop详解
- Linux下使用yum安装软件
- linux基础命令学习(三)文件搜索 find
- 在线网站技术分析工具
- Linux下时间戳格式和标准时间格式的转换