0

我找到了使用 boost 创建线程池的方法:http: //think-async.com/Asio/Recipes。我让它运行并且它有效。但是,我有任务发生,比如说,所有 50 毫秒。

现在,一种解决方案是占用一个线程,每 50 毫秒将此类任务添加到线程池,即添加到 io_service。如果没有额外的线程,我真的无法想到如何做到这一点。有人可以试试吗?

4

1 回答 1

2

一种方法是使用deadline timer(参见http://www.boost.org/doc/libs/release/doc/html/boost_asio/tutorial/tuttimer2.html)。

但是,这取决于您的io_service. 例如,如果您将相对较快的功能安排到io_service,那么您绝对应该使用deadline_timer. 但是,如果您安排非常长的任务并要求此周期性超时处理程序或多或少地以相等的间隔执行,您有两种可能性:

  1. 提供足够的线程(多个线程可以同时调用io_service::run()方法,与链接中的示例完全相同)

  2. 在专用线程中处理您的计时器

于 2012-08-19T07:45:35.510 回答