URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7348
[ Назад ]

Исходное сообщение
"Вызов функции"

Отправлено Fisher , 04-Май-08 09:55 
Здравствуйте! Подскажите пожалуйста, как сделать так, чтобы функции f15() и f60() вызывались каждые 15 и 60 секунд соответственно? Может так, например: if(Ттек.с-Тстар.с>15) f15(). Думаю необходимо учитывать то, что функции могут выполняться достаточно долго.

int main()
{
for(;;)
{
//if(Tcurr.s-Told.s>15)
f15();
//if(Tcurr.s-Told.s>60)
f60();
}
return 0;
}


Содержание

Сообщения в этом обсуждении
"Вызов функции"
Отправлено phpcoder , 04-Май-08 10:02 
>Здравствуйте! Подскажите пожалуйста, как сделать так, чтобы функции f15() и f60() вызывались каждые 15 и 60 секунд соответственно?

Может быть так?

int count = 0;
for ( ;; ) {
    f15();
    if (count == 4) {
        f60();
        count = 0;
    } else {
        count++;
    }
}

> Думаю необходимо учитывать то, что функции могут выполняться достаточно долго.

Можно попробовать статическую переменную внутри ф-ции или что-нить с мутексами уже замутить.


"Вызов функции"
Отправлено Fisher , 04-Май-08 11:56 
>[оверквотинг удален]
>        count = 0;
>    } else {
>        count++;
>    }
>}
>
>> Думаю необходимо учитывать то, что функции могут выполняться достаточно долго.
>
>Можно попробовать статическую переменную внутри ф-ции или что-нить с мутексами уже замутить.
>

Спасибо! Только в вашем примере, наверно необходимо делать задержку (sleep), т.к. частота выполения for(;;) будет зависит от частоты ЦП.


"Вызов функции"
Отправлено phpcoder , 04-Май-08 12:45 
>Спасибо! Только в вашем примере, наверно необходимо делать задержку (sleep), т.к. частота
>выполения for(;;) будет зависит от частоты ЦП.

Да, забыл sleep 15 добавить.


"Вызов функции"
Отправлено Alu , 06-Май-08 15:35 
man 2 alarm