Асинхронный таймер в Linux - PullRequest
2 голосов
/ 21 октября 2011

Я хочу использовать асинхронный таймер, который запускает функцию обратного вызова, когда она истекает.Я хочу точность в микросекундах.мой поток кода выглядит следующим образом ..

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...
}

Я думаю, что timer_connect не использовался в последних версиях Linux .. У меня есть альтернатива?

Спасибо,

1 Ответ

6 голосов
/ 21 октября 2011

Действительно, timer_connect не существует в последней версии Linux.На самом деле, я совершенно уверен, что его нет в ЛЮБОЙ версии Linux, недавней или нет.Некоторые прибегают к поиску в Google, что это что-то найдено в VxWorks.Он также не найден в POSIX, FWIW.

В Linux (и POSIX) вы можете указать указатель на struct sigevent в качестве второго аргумента для timer_create () (который в вашем примере равен NULL).В свою очередь, структура sigevent имеет член (* sigev_notify_function), который, как следует из названия, является функцией, вызываемой по истечении таймера (для этого необходимо, чтобы метод уведомления был SIGEV_THREAD).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...