Sie können den Schlafmodus verwenden Funktion von Win32 API.
Oder wenn Sie Visual Studio 2010 (oder einen anderen c ++ 0x-fähigen Compiler) verwenden, verwenden Sie
%Vor%Bei älteren Compilern können Sie den gleichen Komfort nutzen, indem Sie das entsprechende Bibliotheken erweitern
Unnötig zu sagen, der Hauptvorteil ist die Portabilität und die einfache Umwandlung des Verzögerungsparameters in "menschliche" Einheiten.
Der Windows Task Scheduler hat eine Granularität weit über 1ms (in der Regel 20ms). Sie können dies testen, indem Sie den Leistungsindikator verwenden, um die tatsächlich in der Funktion Sleep()
verbrachte Zeit zu messen. (Mit QueryPerformanceFrequency()
und QueryPerformanceCounter()
können Sie die Zeit bis zur Nanosekunde messen). Beachten Sie, dass Sleep(0)
den Thread für die kürzest mögliche Zeit schlafen lässt.
Sie können dieses Verhalten jedoch ändern, indem Sie verwenden timeBeginPeriod()
und übergibt einen Zeitraum von 1 ms. Jetzt sollte Sleep(0)
viel schneller zurückgeben.
Beachten Sie, dass dieser Funktionsaufruf zum Abspielen von Multimediaströmen mit einer besseren Genauigkeit erstellt wurde. Ich hatte nie ein Problem damit, aber die Notwendigkeit für solch eine schnelle Zeit ist ziemlich selten. Je nachdem, was Sie erreichen möchten, gibt es möglicherweise bessere Möglichkeiten, die gewünschte Genauigkeit zu erreichen, ohne auf diesen "Hack" zurückgreifen zu müssen.