Linux中的异步计时器

时间:2011-10-21 06:38:39

标签: linux asynchronous

我想使用异步计时器,它会在到期时触发回调函数。我想要微秒级的精度。 我的代码流程就像这样..

timer_t tid;
struct itimerspec val;

val.it_value.tv_sec = 0;
val.it_value.tv_nsec = 100000;

value.it_interval.tv_sec = 0;
value.it_interval.tv_nsec = 100000;

timer_create (CLOCK_REALTIME, NULL, &tid);
timer_connect (tid, myfunc,0);
timer_settime (tid, 0, &val, NULL);



and write my handle function:

myfunc(){
blah blah blah...
}

我认为在最近的Linux版本中没有使用timer_connect。我有其他选择吗?

谢谢,

1 个答案:

答案 0 :(得分:6)

在最近的Linux版本中确实不存在timer_connect。实际上,我很确定它在任何Linux版本中都不存在,最近与否。一些谷歌搜索表明它是在VxWorks中发现的东西。它在POSIX中也找不到,FWIW。

在Linux(和POSIX)中,您可以提供指向struct sigevent的指针作为timer_create()的第二个参数(在您的示例中为NULL)。 struct sigevent又有一个成员(* sigev_notify_function),顾名思义,它是在计时器到期时调用的函数(这要求通知方法是SIGEV_THREAD)。