Heim > Backend-Entwicklung > C++ > Wie kann ich unter Linux ohne externe Bibliotheken eine Zeitgenauigkeit im Millisekundenbereich erreichen?

Wie kann ich unter Linux ohne externe Bibliotheken eine Zeitgenauigkeit im Millisekundenbereich erreichen?

Linda Hamilton
Freigeben: 2024-11-19 07:05:02
Original
595 Leute haben es durchsucht

How Can I Get Millisecond Time Accuracy in Linux Without External Libraries?

Millisekundenzeit unter Linux ermitteln: Eine Alternative zu clock()

Auf der Suche nach Präzision über die Sekundengrenzen hinaus stoßen wir unter Linux auf eine Einschränkung von clock(), die sich nur der nächsten Sekunde annähert. Während Bibliotheken von Drittanbietern wie Qt Lösungen mit der QTime-Klasse bereitstellen und einen grundlegenderen Ansatz anstreben, erkunden wir den Bereich der Standard-C-Tools.

Um eine Genauigkeit im Millisekundenbereich zu erreichen, sollten Sie die Verwendung der Funktion gettimeofday() aus dem in Betracht ziehen Kopfzeile. Diese Funktion gibt eine Zeitwertstruktur zurück, die die aktuelle Zeit mit Sekunden- und Mikrosekundenkomponenten erfasst.

Betrachten Sie den folgenden Codeausschnitt:

#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>

int main() {
    struct timeval start, end;
    long mtime, seconds, useconds;    

    gettimeofday(&start, NULL);
    usleep(2000);
    gettimeofday(&end, NULL);

    seconds  = end.tv_sec  - start.tv_sec;
    useconds = end.tv_usec - start.tv_usec;

    mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;

    printf("Elapsed time: %ld milliseconds\n", mtime);

    return 0;
}
Nach dem Login kopieren

In diesem Beispiel nutzen wir gettimeofday() zur Erfassung die aktuelle Zeit vor und nach einer Verzögerung von 2 Millisekunden mit usleep(). Durch Subtrahieren der Anfangszeit von der Endzeit erhalten wir die verstrichene Zeit in Sekunden und Mikrosekunden. Um dies in Millisekunden umzuwandeln, multiplizieren wir die Sekunden mit 1000 und die Mikrosekunden mit 1000,0 und addieren sie, um mit der 0,5-Anpassung eine gebrochene Genauigkeit sicherzustellen.

Diese Methode bietet eine präzise und standardisierte Lösung zum Erhalten von Millisekunden in C on Linux, wodurch die Abhängigkeit von externen Bibliotheken entfällt und gleichzeitig die Kompatibilität zwischen verschiedenen Plattformen gewahrt bleibt.

Das obige ist der detaillierte Inhalt vonWie kann ich unter Linux ohne externe Bibliotheken eine Zeitgenauigkeit im Millisekundenbereich erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage