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

前端之家收集整理的这篇文章主要介绍了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&C++相关文章