Dieser Code ruft eine Funktion alle 40 Sekunden innerhalb einer Schleife auf. Da time_t in meinem Linux-System angemeldet ist, bin ich über diesen Zustand zweifelhaft:Aufruf einer Funktion alle 40 Sekunden innerhalb einer While-Schleife
if ((time_left <= 0 || time_left > interval))
nur (time_left <= 0)
fein prüft? Ich habe auf einige Websites verwiesen und sie haben auch einen Scheck für time_left > interval
hinzugefügt. Ist diese Überprüfung erforderlich?
int print_timed_op()
{
time_t time_now;
time_t time_left;
time_t time_next_interval;
int interval = 40, hit_count =10; //40 second interval, 10 times
time_next_interval = time(0) + interval;
//tight loop
while (1) {
sleep(1);
time_now = time(0);
time_left = time_next_interval - time_now;
/* here time_left > interval check required ? */
if ((time_left <= 0 || time_left > interval)) {
call_my_fuc();
time_next_interval = time(0) + interval;
time_left = interval;
hit_count--;
}
if(hit_count <= 0)
break;
}
return 0;
}
Hinweis: Ich möchte keinen Linux-Timer-Systemaufruf oder eine andere Methode verwenden, um die Funktion regelmäßig aufzurufen.
'time_left> interval' ist nur erforderlich in' time_t' ist vorzeichenlose ganze Zahl, aber es ist nicht, also 'time_left <= 0' sollte ausreichen –
Warum können Sie nicht einfach 'while (1) {sleep (40); call_my_fuc();} '? (Sie könnten Ihre 'hit_count'-Prüfung einfügen, wenn Sie möchten.) – e0k