如何使用setitimer配置3个以上的定时器? linux手册页说:“系统为每个进程提供三个间隔计时器,每个计时器在不同的时域递减。当任何计时器到期时,一个信号被发送到进程,计时器(可能)重新启动”。
答案 0 :(得分:2)
使用itimer机制限制为三个。请参阅timerfd_create()
以获得更现代的替代品(尽管仅限linux),但没有此限制。它也适用于文件描述符而不是信号,因此可以更容易地与使用select / poll实现的事件循环集成。
答案 1 :(得分:2)
Linux提供timer_create
(自2.6起)制作新的间隔计时器:http://www.kernel.org/doc/man-pages/online/pages/man2/timer_create.2.html。
如果您发现自己使用的系统只包含基本计时器,您可以随时在用户编写的库中创建自己的系统。
还有timerfd_create
(也是特定于Linux的)。
答案 2 :(得分:0)
对单个计时器使用mod
检查将其抽象给许多计时器。这就是谷歌在javascript中处理多个计时器的方式,我认为它也可以在这里工作。理由是它比连续运行多个计时器更快的数量级。
换句话说,如果你有一个运行时间为5ms的计时器,并且你计算了它运行了多少次,那么你可以计算mod
,其中每10个计时器就是50ms计时器同样。