【发布时间】:2009-12-21 20:51:08
【问题描述】:
我想提供一个由一个全局线程驱动的全局io_service。很简单,我只有线程体调用io_service::run()。但是,如果没有工作要做,那将不起作用,因为 run (run_one, poll, poll_one) 返回。但是,如果线程反复调用run(),就会在无事可做的时候忙循环。
我正在寻找一种方法来阻止线程,而 io_service 中没有任何工作要做。我可以在混合中添加一个全局事件,以便线程阻塞。但是,这将要求io_service 的用户在每次使用该服务时通知该事件。不是理想的解决方案。
注意:没有实际的全局变量,我从不使用事件进行并发,我只是将问题简化为我的确切需要。真正的目标是不需要io_service 作为构造参数的asio::deadline_timer 子类。
【问题讨论】:
标签: c++ concurrency boost-asio