加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – io_service :: run()的专用线程

发布时间:2020-12-16 06:03:48 所属栏目:百科 来源:网络整理
导读:我想提供一个由一个全局线程驱动的全局io_service.简单的说,我只是把线程调用io_service :: run().但是,如果没有任何工作要做,那不会运行(run_one,poll,poll_one).但是,如果线程重复调用run(),那么当没有什么可做的时候,它会忙碌循环. 我正在寻找一种方法让
我想提供一个由一个全局线程驱动的全局io_service.简单的说,我只是把线程调用io_service :: run().但是,如果没有任何工作要做,那不会运行(run_one,poll,poll_one).但是,如果线程重复调用run(),那么当没有什么可做的时候,它会忙碌循环.

我正在寻找一种方法让线程阻止,而io_service中没有任何工作要做.我可以添加一个全局事件来阻止线程的混合.但是,这将需要io_service的用户在每次使用该服务时通知该事件.不是理想的解决方案.

注意:没有实际的全局变量,我从来没有使用事件来实现并发我只是将问题简化为我的确切需要.真正的目标是一个asio :: deadline_timer子类,不需要io_service作为构造参数.

解决方法

您需要创建一个io_service :: work对象.

请参阅文档的这一部分:

Stopping the io_service from running out of work

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读