我需要一个高分辨率计时器(至少具有微秒级别分辨率),我发现setitimer()
可以设置为微秒级别。
struct itimerval t;
t.it_interval.tv_sec = 0;
t.it_interval.tv_usec = 2;
t.it_value.tv_sec = 0;
t.it_value.tv_usec = 3;
setitimer (ITIMER_REAL , &t, NULL);
我需要知道的是setitimer()
linux中的实际解决方案吗?
答案 0 :(得分:1)
实际上降低,但未指定多低。联机帮助页指出:
可能会在某个(短)时间后到期,这取决于系统计时器分辨率和系统负载;看时间(7)。
如果您需要微秒级别的分辨率和精度,那么您就处于实时域中。
答案 1 :(得分:1)
API处于微秒级,实际分辨率取决于内核配置和硬件资源。
如果你的内核配置没有设置Hi res timers选项,那么分辨率就是OS滴答分辨率 - 它本身在内核配置(CONFIG_HZ)中设置,通常在100到1000赫兹之间。
如果打开hi res计时器选项,则计时器分辨率由您的特定计时器硬件能力和限制决定。
您可以使用以下命令找到系统上的实际定时器源:
$ ls / sys / devices / system / clocksource / clocksource0 /
$ cat / sys / devices / system / clocksource / clocksource0 / *