LINUX.ORG.RU

Таймеры


0

1

Язык - С. Каков наиболее правильный способ реализации таймеров? Интересуют интервалы от сотен мкс до нескольких секунд. Причем желательно, чтобы время работы обработчика события не влияло на интервал.

★★★★

Ответ на: Re: Таймеры от tailgunner

Re: Таймеры

Ух-ты, здорово. Но в общем-то мне нужно 2-3 таймера, поэтому это явный overkill. Видимо я просто остановлюсь на потоках усыпленных usleep-ом.

alexru ★★★★ ()
Ответ на: Re: Таймеры от alexru

Re: Таймеры

> Видимо я просто остановлюсь на потоках усыпленных usleep-ом.

А, так ты в POSIX пишешь? У POSIX есть таймерный API, вообще-то.

tailgunner ★★★★★ ()
Ответ на: Re: Таймеры от tailgunner

Re: Таймеры

Да, действительно. Я как-то не обратил внимания.

alexru ★★★★ ()
Ответ на: Re: Таймеры от alexru

Re: Таймеры

> Видимо я просто остановлюсь на потоках усыпленных usleep-ом.

Но тогда тебе никто не гарантирует точность.

smh ★★★ ()
Ответ на: Re: Таймеры от smh

Re: Таймеры

> Видимо я просто остановлюсь на потоках усыпленных usleep-ом.

Ну, если сделать задержки по poll(2) - точность будет весьма высокой.

rjaan ★★ ()

Re: Таймеры

> Язык - С. Каков наиболее правильный способ реализации таймеров? Интересуют интервалы от сотен мкс до нескольких секунд.

man alarm

man settimer

man nanosleep (слип без использования сигналов)

man clock_nanosleep (POSIX, не во всех Unix реализовано)

man timer_create, timer_delete, timer_settime (POSIX, не во всех Unix реализовано)

Предпочитай таймеры слипам. И еще, не мешай в одном коде слипы usleep и sleep с таймерами alarm, settimer, timer_create, так как все эти функции завязаны на сигнале SIGALRM.

Я бы посоветовал использовать settimer/gettimer + nanosleep (если приспичит).

badgopher ()
Ответ на: Re: Таймеры от badgopher

Re: Таймеры

Забыл добавить еще select :-) man select

struct timeval tv;

tv.sec = 0;
tv.usec = 500; /* в микросекундах */

select(0, NULL, NULL, &tv);

Работает везде :-)

badgopher ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.