我有一个项目列表,我需要在不同的时间间隔更新。该列表可以长达数千个项目。每个项目可能具有不同的间隔。如果我为每个项目创建一个计时器,我是否会使用线程使系统饱和?我认为最好创建一个等于项目集中最小间隔的计时器,然后在每次更新时增加一个计数器,然后检查计数器现在是否等于任何其他间隔。如果最小间隔是所有其他间隔的倍数,则应该起作用。有什么建议吗?
答案 0 :(得分:12)
Boost每个计时器不使用一个线程,它保留一个计时器队列。每个计时器都使用boost::asio::io_service
对象创建,可以完成实际工作。
这个对象可以在一个或多个线程when you run boost::asio::io_service::run()
explicitly from multiple threads中调度它的工作,但是定时器和线程之间没有一对一的对应关系,而且Asio不会在你的背后创建线程。
答案 1 :(得分:1)
Recent versions Asio,Boost 1.43及更高版本,使用Linux上的timerfd_create(2)
API获取deadline_timer
s。
更改为使用timerfd在Linux上调度计时器时 可用。