作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找到了使用 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/
我是一名优秀的程序员,十分优秀!