我需要一个高分辨率的定时器(至少要有微秒级别的分辨率),我发现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中的实际分辨率?
发布于 2011-10-04 17:58:13
更低,实际上,但没有指定有多低。手册页说明:
可能会在一段(短)时间后到期,这取决于系统计时器分辨率和系统负载;请参阅时间(7)。
如果你需要微秒级的分辨率和精度,你就进入了实时领域。
发布于 2011-10-04 18:03:42
接口以微秒为单位,实际分辨率取决于内核配置和硬件资源。
如果您的内核配置没有设置高分辨率计时器选项,则解决方案是操作系统节拍分辨率-它本身在内核配置(CONFIG_HZ)中设置,通常在100到1000 hz之间。
如果启用了高分辨率计时器选项,则计时器分辨率取决于您特定的计时器硬件能力和限制。
您可以使用以下命令找出系统上的实际计时器源:
$ ls /sys/devices/system/clocksource/clocksource0/
$ cat /sys/devices/system/clocksource/clocksource0/*
https://stackoverflow.com/questions/7646067
复制相似问题