Я не уверен, что понимаю ваш вопрос.
Если вы хотите, чтобы функция выполнялась точно с интервалом (т. Е. Без дрожания или задержки), вам необходимо использовать какой-либо обработчик прерываний.Если вы используете разницу между двумя временными метками, чтобы определить, когда вызывать вашу функцию, ваш вызов функции может быть отложен на неопределенное время в зависимости от кода, который выполняется до считывания второй временной метки.Обычно это нежелательное поведение.
Возможно, это проще объяснить с помощью надуманного примера:
#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 секунд.