LINUX.ORG.RU

История изменений

Исправление AKonia, (текущая версия) :

man

Система предоставляет каждому процессу три таймера, значение каждого из которых уменьшается на единицу по истечении установленного времени. Когда на одном из таймеров истекает время, то процессу оправляется сигнал и таймер (обычно) перезапускается

ITIMER_REAL
    уменьшается постоянно (в режиме реального времени) и подает сигнал SIGALRM, когда значение таймера становится равным 0. 
ITIMER_VIRTUAL
    уменьшается только во время работы процесса и подает сигнал SIGVTALRM, когда значение таймера становится равным 0. 
ITIMER_PROF
    уменьшается во время работы процесса и когда система выполняет что-либо по заданию процесса. Этот таймер обычно используется вместе с ITIMER_VIRTUAL для профилирования времени работы приложения в пользовательской области и в области ядра. Когда значение таймера становится равным 0, подается сигнал SIGPROF. 

Я бы предложил завести приоритетную очередь из которой тягать ближайшее срабатывание и извлекая значение ставить следующее. И ещё как резервный вариант поискал либо альтернативы, либо готовые высокоуровневые обёртки.

Исправление AKonia, :

man

Система предоставляет каждому процессу три таймера, значение каждого из которых уменьшается на единицу по истечении установленного времени. Когда на одном из таймеров истекает время, то процессу оправляется сигнал и таймер (обычно) перезапускается

ITIMER_REAL
    уменьшается постоянно (в режиме реального времени) и подает сигнал SIGALRM, когда значение таймера становится равным 0. 
ITIMER_VIRTUAL
    уменьшается только во время работы процесса и подает сигнал SIGVTALRM, когда значение таймера становится равным 0. 
ITIMER_PROF
    уменьшается во время работы процесса и когда система выполняет что-либо по заданию процесса. Этот таймер обычно используется вместе с ITIMER_VIRTUAL для профилирования времени работы приложения в пользовательской области и в области ядра. Когда значение таймера становится равным 0, подается сигнал SIGPROF. 

Я бы предложил завести приоритетную очередь из которой тягать ближайшее срабатывание и извлекая значение доправлять следующее.

Исходная версия AKonia, :

man

Система предоставляет каждому процессу три таймера, значение каждого из которых уменьшается на единицу по истечении установленного времени. Когда на одном из таймеров истекает время, то процессу оправляется сигнал и таймер (обычно) перезапускается

ITIMER_REAL
    уменьшается постоянно (в режиме реального времени) и подает сигнал SIGALRM, когда значение таймера становится равным 0. 
ITIMER_VIRTUAL
    уменьшается только во время работы процесса и подает сигнал SIGVTALRM, когда значение таймера становится равным 0. 
ITIMER_PROF
    уменьшается во время работы процесса и когда система выполняет что-либо по заданию процесса. Этот таймер обычно используется вместе с ITIMER_VIRTUAL для профилирования времени работы приложения в пользовательской области и в области ядра. Когда значение таймера становится равным 0, подается сигнал SIGPROF.