9

我想提供一个io_service由一个全局线程驱动的全局。很简单,我只有线程体调用io_service::run()。但是,如果没有工作要做,那将不起作用,因为run( run_one, poll, ) 返回。poll_one但是,如果线程重复调用run(),它会在无事可做时忙循环。

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

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

4

1 回答 1

21

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

请参阅文档的这一部分:

阻止 io_service 工作结束

于 2009-12-21T21:04:17.650 回答