我需要一个高分辨率计时器(至少具有微秒级分辨率),我发现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 中的实际分辨率?
我需要一个高分辨率计时器(至少具有微秒级分辨率),我发现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 中的实际分辨率?
实际上更低,但未指定多低。手册页指出:
之后可能会过期一些(短)时间,这取决于系统计时器分辨率和系统负载;见时间(7)。
如果您需要微秒级的分辨率和精度,那么您就处于实时域中。
API 以微秒为单位,实际分辨率取决于内核配置和硬件资源。
如果您的内核配置没有设置 Hi res timers 选项,则分辨率是操作系统刻度分辨率 - 它本身在内核配置 (CONFIG_HZ) 中设置,通常在 100 到 1000 hz 之间。
如果高分辨率计时器选项打开,则计时器分辨率取决于您的特定计时器硬件能力和限制。
您可以使用以下命令找出系统上的实际计时器源:
$ ls /sys/devices/system/clocksource/clocksource0/
$ cat /sys/devices/system/clocksource/clocksource0/*