小编Edg*_*ger的帖子

在linux推荐的方式下1ms分辨率计时器

我需要在linux下以1ms的分辨率打开计时器.它用于递增计时器值,而计时器值又用于查看是否应触发各种事件.由于glibc要求,POSIX timerfd_create不是一个选项.我尝试过timer_create和timer_settimer,但我从它们得到的最好的是10ms的分辨率,较小的值似乎默认为10ms的分辨率.根据联机帮助页,Getittimer和setitimer的分辨率为10毫秒.

我现在可以想到的唯一一种做这个计时器的方法是在我的主循环中使用带有CLOCK_MONOTONIC的clock_gettime,如果ms已经通过则测试,如果是,则增加计数器(然后检查是否应该触发各种事件).

有没有比在主循环中不断查询更好的方法呢?推荐的解决方案是什么?

我使用的语言很简单

更新
我使用的是2.6.26内核.我知道你可以在1kHz时中断它,然后POSIX timer_*函数可以编程为1ms,但这似乎不可靠,我不想使用它,因为它可能需要一些新内核系统.一些库存内核似乎仍然配置了100Hz.我需要检测到这一点.该应用程序可能运行在我的系统以外的其他东西:)

我无法入睡1ms因为可能有网络事件我必须做出反应.

我如何解决它 因为它并不重要我只是宣称全局计时器的分辨率为100ms.使用自己的计时器的所有事件必须设置至少100毫秒的计时器到期.我或多或少想知道是否会有更好的方法,因此问题.

为什么我接受了答案 我认为自由空间的答案最好地描述了为什么没有实时Linux系统它是不可能的.

c linux timer

19
推荐指数
4
解决办法
4万
查看次数

标签 统计

c ×1

linux ×1

timer ×1