我找到了使用 boost 创建线程池的秘诀:http://think-async.com/Asio/Recipes .我让它运行起来并且有效。但是,我有任务发生,比方说,所有 50 毫秒。
现在,一种解决方案是占用一个线程,每 50 毫秒将这样的任务添加到线程池,即 io_service。如果没有额外的线程,我真的想不出如何做到这一点。有人可以试试吗?
最佳答案
一种方法是使用 deadline timer
(参见 http://www.boost.org/doc/libs/release/doc/html/boost_asio/tutorial/tuttimer2.html)。
但是,这取决于您的 io_service
还有哪些其他任务。例如,如果您将相对较快的功能调度到io_service
,那么您一定要使用deadline_timer
。但是,如果您安排非常长的任务并要求此周期性超时处理程序或多或少以相等的间隔执行,您有两种可能性:
提供足够的线程(多个线程可以同时调用
io_service::run()
方法,与您链接中的示例完全一样)在专用线程中处理您的计时器
关于c++ - 将 boost::asio io_service 用于具有周期性任务的线程池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12024857/