【问题标题】:Using boost::asio io_service for thread pool with periodic tasks?将 boost::asio io_service 用于具有周期性任务的线程池?
【发布时间】:2012-08-19 07:06:54
【问题描述】:

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

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

【问题讨论】:

    标签: c++ boost threadpool boost-asio


    【解决方案1】:

    一种方法是使用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. 在专用线程中处理您的计时器

    【讨论】:

      猜你喜欢
      • 2011-12-18
      • 2017-09-17
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 2016-01-07
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多