【发布时间】:2014-11-14 04:09:22
【问题描述】:
我正在研究基于 boost 1.52 的 boost::asio::deadline_timer 的实现。
如the article on highscore中所述,分三部分实现:
-
deadline_timer,I/O 对象 -
deadline_timer_service,服务 -
detail::deadline_timer_service,服务实现
将有一个 deadline_timer_service 实例服务于许多 deadline_timer 对象。为每个 deadline_timer 对象创建一个 detail::deadline_timer_service 实例。此外,定时器由调度程序调度,调度程序通常是一个反应器(即大多数情况下 Linux 上的epoll_reactor)。
detail::deadline_timer_service 中有一个 timer_queue 类型的 timer_queue_ 成员,它是一个存储预定计时器的堆。这意味着每个deadline_timer 对象将有一个timer_queue 实例。多个timer_queue对象可以通过add_timer_queue()添加到调度器中,由一个类timer_queue_set管理。
我的问题是,为什么asio 创建多个队列来处理计时器?如果我们在调度器中有一个所有定时器都可以共享的定时器队列实例有什么缺点?
【问题讨论】:
-
我不认为这就是它在 boost 中的实现方式。 “不只是提供骨架,本节开发的 Boost.Asio 扩展将类似于可用的
boost::asio::deadline_timer对象” -
@sehe 我不是指高分链接中的示例。我的问题是关于
boost::asio中的boost::asio::deadline_timer实现。
标签: c++ boost boost-asio