понадобилось мне сделать выполнение некоторых
функций через определенное время
пока приходит на ум такая схема
сделать таблицу указателей на функции
с параметром через какое время из запускать
в момент добавления делать
exectime = time(NULL) + delay;
и в цикле проверять
if(time(NULL) > exectime) *(fn)();
но у данной схемы есть 3 недостатка
1 если вдруг юзер во время работы проги переведет время
то все задержки сместятся и получиться кавардак
2 выполняемые функции должны иметь одинаковый вид
(т.е. теряется некая универсальность того что надо выполнить)
3 точность, цикл вожможен в виде
while(1){
do_checks();
sleep(sometime);
}
т.е. чтоб увеличить точность надо уменьшить время слипа
но это будет грузить проц... в моем случает это не особо
критично, точность даже в пару секунд устраивает
но всеже интересно как сделать эфективнее...
может быть кто-то подскажет схему реализации избавленую
от этих недостатков ? или пути обхождения их
в предложенном варианте ?
P.S. функций может быть довольно много (10-30)