Wie verwenden von timer in C?
Was ist die Methode, einen timer zu verwenden, die in C? Ich muss warten, bis 500 ms für einen job. Bitte erwähnen Sie, eine gute Möglichkeit diesen job zu machen. Ich verwendet sleep(3);
Aber diese Methode nicht funktioniert in dieser Zeit. Ich habe etwas, werde versuchen bis dahin zu bekommen jede Eingabe.
select, poll, epoll... Was willst du?
Diese wird dupliziert Frage. Siehe stackoverflow.com/questions/459691/best-timing-method-in-c
was ist select, poll, epoll? Ich möchte einen timer einstellen, angenommen, 5 Sekunden. Wenn der Benutzer Eingaben innerhalb dieser Zeit wird die Eingabe als gültig.
Gerade gelesen
Sie können keine Timer im reinen standard-C. Sie müssen einige Betriebssystem - Unterstützung. Auf Linux, Lesen Sie (7) vorsichtig.
Diese wird dupliziert Frage. Siehe stackoverflow.com/questions/459691/best-timing-method-in-c
was ist select, poll, epoll? Ich möchte einen timer einstellen, angenommen, 5 Sekunden. Wenn der Benutzer Eingaben innerhalb dieser Zeit wird die Eingabe als gültig.
Gerade gelesen
man termios
: Sie können setup-terminal so, dass es warten 5 Sekunden für Eingang. Wenn würde es keine Eingabe read
0 zurück, otherway können Sie Benutzerdaten Lesen vom terminal.Sie können keine Timer im reinen standard-C. Sie müssen einige Betriebssystem - Unterstützung. Auf Linux, Lesen Sie (7) vorsichtig.
InformationsquelleAutor | 2013-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine
time_t
struct undUhr()
Funktion von Zeit.h.Speicherung der start-Zeit in einem
time_t
struct mithilfeclock()
und überprüfen Sie die verstrichene Zeit durch einen Vergleich der Differenz zwischen der gespeicherten Zeit und der aktuellen Zeit.Es hängt davon ab, was Sie tun möchten. Wenn Ihr programm basiert auf einer großen Schleife, können Sie legte es in. Andernfalls müssen Sie zum erstellen eines dedizierten thread, um eine Schleife auf den timer.
InformationsquelleAutor Qutus
Hier ist eine Lösung, die ich verwendet (es braucht
#include <time.h>
):InformationsquelleAutor David Guyon
Können diese Beispiele helfen Ihnen
Datei kompilieren, ausführen und löschen nach (meine Präferenz)
Versuchen, führen Sie es für sich selbst, um das Ergebnis sehen.
Hinweise:
Testumgebung
InformationsquelleAutor Seti Volkylany
Ja, du brauchst eine Schleife. Wenn Sie bereits eine main-Schleife (die meisten GUI-event-driven-Kram funktioniert), können Sie wahrscheinlich halten Sie Ihre timer. Verwendung:
Dann (für Zeiten über 1 Sekunde), initialisiert den timer durch das Lesen der aktuellen Zeit:
Fügen Sie die Anzahl von Sekunden für den timer warten soll, und speichern Sie es in fire_t. Ein time_t ist im wesentlichen ein uint32_t ist, müssen Sie möglicherweise um Sie zu wirken.
Innerhalb der Schleife einen anderen
wenn (my_t > fire_t) betrachten Sie dann den timer ausgelöst und tun Sie die Sachen, die Sie wollen es. Das wird wahrscheinlich beinhalten das zurücksetzen, indem Sie Folgendes tun andere fire_t = time(NULL) + seconds_to_wait für die nächste Zeit.
Einen time_t ist ein etwas antiquiert, unix Methode der Speicherung von Zeit als Anzahl der Sekunden seit Mitternacht 1/1/1970 aber es hat viele Vorteile. Für Zeiten kleiner als 1 Sekunde müssen Sie die Verwendung von gettimeofday() (Mikrosekunden) oder clock_gettime() (Nanosekunden) und beschäftigen sich mit einem struct timeval oder struct timespec ist ein time_t und die Mikrosekunden oder Nanosekunden seit dem 1 Sekunden-Marke. Einen Zeitgeber funktioniert auf die gleiche Weise, außer wenn Sie Ihre Zeit zu warten, die Sie benötigen, zu erinnern, um manuell die zu tragen (in die time_t), wenn die daraus resultierende Mikrosekunden oder Nanosekunden-Wert geht über 1 Sekunde. Ja, es ist chaotisch. Siehe man 2 mal, man gettimeofday, Mann clock_gettime.
sleep(), usleep(), nanosleep() einen versteckten Vorteil. Sie sehen es als Pause Ihr Programm, aber was Sie wirklich tun ist, lassen Sie die CPU-Leistung für diese Zeit. Wiederholt polling durch das Lesen der Zeit und Vergleich die mal gemacht (sind wir schon da?) brennen eine Menge CPU-Zyklen, die verlangsamen können andere Programme auf dem gleichen Rechner laufen (und verbrauchen mehr Strom/Akku). Es ist besser zu schlafen() die meisten der Zeit, dann starten Sie die überprüfung der Zeit.
Werden, wenn Sie versuchen zu schlafen und arbeiten zur gleichen Zeit, die Sie brauchen-threads.
InformationsquelleAutor Alan Corey