io_service :: run()的专用线程

def*_*ode 9 c++ concurrency boost-asio

我想提供一个io_service由一个全局线程驱动的全局.很简单,我只是有线程体调用io_service::run().然而,这并不为工作run(run_one,poll,poll_one)的回报,如果没有工作要做.但是,如果线程反复调用run(),它将在没有任何事情要做时忙于循环.

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

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

jan*_*anm 21

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

请参阅文档的此部分:

阻止io_service停止工作