История изменений
Исправление 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.