История изменений
Исправление COKPOWEHEU, (текущая версия) :
А можно и по методу конечного автомата:
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
unsigned long get_time_ms(){
struct timeval tv;
unsigned long time_ms;
gettimeofday(&tv,NULL);
time_ms = tv.tv_usec/1000 + tv.tv_sec*1000;
return time_ms;
}
void task_func(unsigned long cur_time, unsigned long interval){
static unsigned long next_time = 0;
if( cur_time >= next_time ){
next_time = cur_time + interval;
printf("Time!\n");
}
}
int main(){
for(int i=0; i<100; i++){
usleep(100000);
task_func( get_time_ms(), 1000 );
}
}
Исходная версия COKPOWEHEU, :
А можно и по методу конечного автомата:
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
unsigned long get_time_ms(){
struct timeval tv;
unsigned long time_ms;
gettimeofday(&tv,NULL);
time_ms = tv.tv_usec/1000 + tv.tv_sec*1000;
return time_ms;
}
void task_func(unsigned long cur_time, unsigned long interval){
static unsigned long next_time = 0;
if( cur_time >= next_time ){
next_time = cur_time + interval;
printf("Time!\n");
}
}
int main(){
for(int i=0; i<100; i++){
usleep(100000);
task_func( get_time_ms(), 1000 );
}
}