09.07.2013, 12:12
Можно по-другому.
Предполагается, что у тебя есть n функций.
Каждая выполняется согласно своему интервалу (в секундах).
Ставишь секундный таймер на функцию globalUpdate; repeat = true.
SCD, - the smallest common dividend, - наименьшее общее делимое.
Тебе его нужно посчитать, зная интервалы запуска всех функций.
Требуется для того, чтобы не "сбросить" некоторое кол-во времени, оставшееся до запуска какой-либо функции (проще говоря, все функции будут запускаться четко по плану, а не "как хотят").
Например: 3 функции с интервалами в 20, 40, 55 секунд. SCD = 440 секунд (все интервалы делят это число нацело).
P. S.
Я не думаю, что у тебя там будут огромные интервалы, при которых SCD превысит max integer.
Но если вдруг - можешь сменить integer на float.
PHP код:
int globalTimer;
public globalUpdate ()
{
++ globalTimer;
if (!(globalTimer % interval_1))
func_1 ();
if (!(globalTimer % interval_2))
func_2 ();
// ...............
if (!(globalTimer % interval_n))
func_n ();
if (globalTimer == SCD)
globalTimer = -1;
return 1;
}
Каждая выполняется согласно своему интервалу (в секундах).
Ставишь секундный таймер на функцию globalUpdate; repeat = true.
SCD, - the smallest common dividend, - наименьшее общее делимое.
Тебе его нужно посчитать, зная интервалы запуска всех функций.
Требуется для того, чтобы не "сбросить" некоторое кол-во времени, оставшееся до запуска какой-либо функции (проще говоря, все функции будут запускаться четко по плану, а не "как хотят").
Например: 3 функции с интервалами в 20, 40, 55 секунд. SCD = 440 секунд (все интервалы делят это число нацело).
P. S.
Я не думаю, что у тебя там будут огромные интервалы, при которых SCD превысит max integer.
Но если вдруг - можешь сменить integer на float.