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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...