Шрифт:
14.3.3. Интервальные таймеры:
Функция
Интервальный таймер подобен многократно использующимся сигнальным часам. Вы устанавливаете начальное время, когда он должен «сработать», а также как часто это должно впоследствии повторяться. Оба этих значения используют объекты
Существуют три различных таймера, описанных в табл. 14.2.
Таблица 14.2. Интервальные таймеры
Таймер | Сигнал | Функция |
---|---|---|
ITIMER_REAL | SIGALRM | Работает в реальном режиме |
ITIMER_VIRTUAL | SIGVTALRM | Работает, когда процесс выполняется в режиме пользователя |
ITIMER_PROF | SIGPROF | Работает, когда процесс выполняется в режиме пользователя или ядра. |
Использование первого таймера,
Второй таймер,
Третий таймер,
158
Корректное выполнение профилировки нетривиальная задача, если вы думаете о написании интерпретатора, стоит сначала провести свои исследования — Примеч. автора.
Аргумент
Прикладным программам не следует ожидать, что таймеры будут с точностью до микросекунд. Справочная страница getitimer(2) дает следующее объяснение:
Таймеры никогда не срабатывают раньше заданного времени, вместо этого срабатывая спустя небольшой постоянный интервал времени, зависящий от разрешения системного таймера (в настоящее время 10 мс). После срабатывания будет сгенерирован сигнал, а таймер будет сброшен. Если таймер срабатывает, когда процесс выполняется (для таймера
Из этих трех таймеров