我想提供一个由一个全局线程驱动的全局io_service.简单的说,我只是把线程调用io_service :: run().但是,如果没有任何工作要做,那不会运行(run_one,poll,poll_one).但是,如果线程重复调用run(),那么当没有什么可做的时候,它会忙碌循环.
我正在寻找一种方法让线程阻止,而io_service中没有任何工作要做.我可以添加一个全局事件来阻止线程的混合.但是,这将需要io_service的用户在每次使用该服务时通知该事件.不是理想的解决方案.
注意:没有实际的全局变量,我从来没有使用事件来实现并发我只是将问题简化为我的确切需要.真正的目标是一个asio :: deadline_timer子类,不需要io_service作为构造参数.
解决方法
您需要创建一个io_service :: work对象.
请参阅文档的这一部分: