是否可以使用setitimer配置3个以上的定时器?

时间:2012-07-01 21:41:31

标签: c linux timer

如何使用setitimer配置3个以上的定时器? linux手册页说:“系统为每个进程提供三个间隔计时器,每个计时器在不同的时域递减。当任何计时器到期时,一个信号被发送到进程,计时器(可能)重新启动”。

3 个答案:

答案 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计时器同样。