Hi I am looking into the implementation of `boost::asio::deadline_timer`, based on boost 1.52. As described in [the article on highscore](http://en.highscore.de/cpp/boost/asio.html#asio_extensions), it is implemented in three parts: * `deadline_timer`, the i/o object * `deadline_timer_service`, the service * `detail::deadline_timer_service`, the service implementation There will be a single instance of `deadline_timer_service` serving many `deadline_timer` objects. An instance of `detail::deadline_timer_service` is created for each `deadline_timer` object. Moreover, the timers are scheduled by a scheduler, which is usually a reactor (i.e. `epoll_reactor` on Linux in most cases). There is a `timer_queue_` member of type `timer_queue` in `detail::deadline_timer_service` which is a heap that stores scheduled timers. This means that there will be one instance of `timer_queue` for each `deadline_timer` object. Multiple `timer_queue` objects can be added to the scheduler by `add_timer_queue()`, and they are managed by a class `timer_queue_set`. My question is, why `asio` create multiple queues to handle timers? What is the drawback if we have a single timer queue instance in the scheduler that all timers can share? Please note that I am asking about the `boost::asio::deadline_timer`, not the example in the highscore link. I have posted this question on stackoverflow previously [here](http://stackoverflow.com/q/26922754/930095) -- Best wishes, Wang Danqi