Использование глобальной функции в C для таймера? - PullRequest
0 голосов
/ 25 февраля 2011

Я хочу написать функцию на C, которая запускается по таймеру независимо от других функций. Я не хочу, чтобы этот таймер останавливался, когда другие функции работают. Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 25 февраля 2011

Вы можете сохранить значение Time в глобальной переменной в точке входа, то есть сразу после main. После этого, когда вам нужно узнать текущее время выполнения программы, вы можете получить его, вычтя это значение времени из времени в этом экземпляре.

0 голосов
/ 28 февраля 2011

Я не уверен, что понимаю ваш вопрос.

Если вы хотите, чтобы функция выполнялась точно с интервалом (т. Е. Без дрожания или задержки), вам необходимо использовать какой-либо обработчик прерываний.Если вы используете разницу между двумя временными метками, чтобы определить, когда вызывать вашу функцию, ваш вызов функции может быть отложен на неопределенное время в зависимости от кода, который выполняется до считывания второй временной метки.Обычно это нежелательное поведение.

Возможно, это проще объяснить с помощью надуманного примера:

#include <stdio.h>
#include <time.h>

void f() { // do something stupid and time-consuming
    int i, j;
    for (i = 0; i < 65535; ++i)
        for(j = 0; j < 65535; ++j);
} 

int main() {
    time_t t0, t1;
    t0 = time(NULL);
    f(); // waste time
    t1 = time(NULL);
    printf("time elapsed: %ld\n", t1 - t0);
}

На моей машине это занимает 11 секунд.

0 голосов
/ 25 февраля 2011

используйте time.h и сделайте свою собственную функцию наподобие здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...