微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – io_service :: 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

原文地址:https://www.jb51.cc/c/112836.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐