Добрый день, ЛОР.
Понадобился мне таймер повышенной точности (кутешный в линуксе отрабатывает только с миллисекундной, в винде и того хуже, но винда меня сейчас, по счастью, не интересует). Смотрю в сторону setitimer()
.
Я правильно понимаю, что таймер типа ITIMER_REAL в программе можно создать только один? Никаких хэндлов и прочих идентификаторов эта функция не возвращает.
То есть, если таймеров нужно несколько, надо:
- написать один обработчик SIGALRM;
- вызвать
setitimer()
, в качестве периода брать НОД периодов нужных таймеров; - нужные субобработчики дёргать из него в зависимости от номера тика;
- по окончании работы вызвать
setitimer()
с нулевым интервалом.
Или я что-то не понимаю / усложняю?