Heim > Artikel > Backend-Entwicklung > Warum scheint Sleep(1) unter Windows 15 ms lang zu schlafen?
Verhalten der Sleep()-Funktion in Windows
Beim Aufruf der Sleep()-Funktion unterbricht ein Thread normalerweise die Ausführung für die angegebene Dauer. In einigen Fällen kann es jedoch so aussehen, als ob der Thread für einen längeren Zeitraum schläft.
In Windows-Versionen wie Windows 7 arbeitet Sleep() mit einem Zeitquantum. Dies bedeutet, dass jede Verzögerung ungleich Null auf das nächste Quantum aufgerundet wird, was zu etwas längeren Schlafdauern führen kann.
Ein häufiges Symptom dieses Verhaltens ist, dass ein Aufruf von Sleep(1) tatsächlich eine verursachen kann Schlaf von ca. 15 ms. Dies liegt daran, dass der Betriebssystem-Scheduler normalerweise ein Quantum von 15,6 ms verwendet.
Zur Veranschaulichung wird ein Codeausschnitt bereitgestellt:
<code class="cpp">#include <iostream> #include <ctime> #include <Windows.h> void test(void) { std::cout << "Testing 1ms sleep." << std::endl; for (unsigned int i = 0; i < 10; i++) { std::clock_t startClocks = std::clock(); Sleep(1); std::clock_t clocksTaken = std::clock() - startClocks; std::cout << "Time: " << clocksTaken << "ms." << std::endl; } }</code>
Bei Ausführung unter Windows 7 wird dieser Code wahrscheinlich angezeigt Melden Sie Schlafdauern von etwa 15 ms statt 1 ms.
Daher ist es typisch, dass Sleep() aufgrund des von Windows verwendeten Zeitquantensystems für einen etwas längeren Zeitraum als die angegebene Verzögerung schläft.
Das obige ist der detaillierte Inhalt vonWarum scheint Sleep(1) unter Windows 15 ms lang zu schlafen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!