Heim  >  Artikel  >  Backend-Entwicklung  >  ## Warum spiegelt GetSystemTimeAdjustment unter Windows 7 nicht immer die tatsächliche Zeitanpassung wider?

## Warum spiegelt GetSystemTimeAdjustment unter Windows 7 nicht immer die tatsächliche Zeitanpassung wider?

DDD
DDDOriginal
2024-10-25 04:59:02466Durchsuche

## Why Does GetSystemTimeAdjustment Not Always Reflect the True Time Adjustment on Windows 7?

Windows 7-Timing-Funktionen: GetSystemTimeAdjustment verstehen

Wie Sie beobachtet haben, können die Ergebnisse der Verwendung der GetSystemTimeAdjustment-Funktion unter Windows 7 rätselhaft sein. Um ein besseres Verständnis zu erlangen, gehen wir auf Ihre Fragen ein:

Frage 1: Richtigkeit der Annahme

Ihre Annahme ist grundsätzlich richtig. Wenn die Systemzeit regelmäßig synchronisiert wird, würden Sie entweder keine Änderung oder Änderungen in Vielfachen des von GetSystemTimeAdjustment erhaltenen Inkrements erwarten.

Frage 2: Grund für die Diskrepanz

Die Die festgestellte Diskrepanz ist darauf zurückzuführen, dass die Granularität der von GetSystemTimeAsFileTime bereitgestellten Systemzeit möglicherweise nicht immer mit dem tatsächlichen Aktualisierungsintervall übereinstimmt, das von GetSystemTimeAdjustment gemeldet wird.

Erklärung:

GetSystemTimeAsFileTime ermöglicht den Zugriff auf die Wanduhr des Systems in 100-ns-Einheiten. Die tatsächliche Aktualisierungsrate der Systemzeit kann jedoch abhängig von Hardwarefaktoren und den Einstellungen der Multimedia-Timer-Schnittstelle variieren.

In Ihrem Fall meldet NtQueryTimerResolution einen Aktualisierungszeitraum von ~25µs, während GetSystemTimeAdjustment eine Anpassung anzeigt von 15,6 ms. Dies deutet darauf hin, dass die Systemzeit häufiger aktualisiert als tatsächlich synchronisiert wird.

Auswirkungen:

Dies bedeutet, dass die in Ihrer Zeitstempelschleife beobachteten Änderungen nicht ausschließlich sind aufgrund der vorgenommenen Zeitanpassung. Vielmehr spiegeln sie die zugrunde liegenden Aktualisierungen der Systemzeit wider, die mit einer höheren Häufigkeit erfolgen.

Empfohlener Ansatz:

Anstatt sich für ein genaues Timing auf GetSystemTimeAdjustment zu verlassen, sollten Sie dies in Betracht ziehen Verwenden von NtQueryTimerResolution, um das tatsächliche Aktualisierungsintervall der Systemzeit zu ermitteln. Dadurch erhalten Sie eine genauere Darstellung des Zeitverhaltens des Systems.

Das obige ist der detaillierte Inhalt von## Warum spiegelt GetSystemTimeAdjustment unter Windows 7 nicht immer die tatsächliche Zeitanpassung wider?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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