понадобилось мне сделать выполнение некоторых
функций через определенное время
пока приходит на ум такая схема
сделать таблицу указателей на функции
с параметром через какое время из запускать
в момент добавления делать
exectime = time(NULL) + delay;
и в цикле проверять
if(time(NULL) > exectime) *(fn)();
но у данной схемы есть 3 недостатка
1 если вдруг юзер во время работы проги переведет время
то все задержки сместятся и получиться кавардак
2 выполняемые функции должны иметь одинаковый вид
(т.е. теряется некая универсальность того что надо выполнить)
3 точность, цикл вожможен в виде
while(1){
do_checks();
sleep(sometime);
}
т.е. чтоб увеличить точность надо уменьшить время слипа
но это будет грузить проц... в моем случает это не особо
критично, точность даже в пару секунд устраивает
но всеже интересно как сделать эфективнее...
может быть кто-то подскажет схему реализации избавленую
от этих недостатков ? или пути обхождения их
в предложенном варианте ?
P.S. функций может быть довольно много (10-30)
Похожие темы
- Форум реализация таймеров (2006)
- Форум Таймер (2013)
- Форум Таймеры (2013)
- Форум Таймеры (2009)
- Форум Таймеры! (2003)
- Форум Таймер (2002)
- Форум Мониторинг доступности интернета на bash (2019)
- Форум Программинирование таймера (2012)
- Форум STM32F4 Таймер (2013)
- Форум POSIX таймеры (2011)