0

我需要一个高分辨率计时器(至少具有微秒级分辨率),我发现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 中的实际分辨率?

4

2 回答 2

1

实际上更低,但未指定多低。手册页指出:

之后可能会过期一些(短)时间,这取决于系统计时器分辨率和系统负载;见时间(7)。

如果您需要微秒级的分辨率和精度,那么您就处于实时域中。

于 2011-10-04T09:58:13.437 回答
1

API 以微秒为单位,实际分辨率取决于内核配置和硬件资源。

如果您的内核配置没有设置 Hi res timers 选项,则分辨率是操作系统刻度分辨率 - 它本身在内核配置 (CONFIG_HZ) 中设置,通常在 100 到 1000 hz 之间。

如果高分辨率计时器选项打开,则计时器分辨率取决于您的特定计时器硬件能力和限制。

您可以使用以下命令找出系统上的实际计时器源:

$ ls /sys/devices/system/clocksource/clocksource0/

$ cat /sys/devices/system/clocksource/clocksource0/*

于 2011-10-04T10:03:42.187 回答