Sleep-Operation in C ++, Plattform: Windows

8

Ich möchte den oben genannten Vorgang in Millisekunden als Einheit ausführen. Welchen Bibliotheks- und Funktionsaufruf sollte ich bevorzugen?

Ty.

    
Pumpkin 30.10.2011, 16:13
quelle

4 Antworten

5

Sie können den Schlafmodus verwenden Funktion von Win32 API.

    
Branko Dimitrijevic 30.10.2011, 16:15
quelle
6

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.

    
sehe 30.10.2011 17:03
quelle
2

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.

    
Adrien Plisson 30.10.2011 16:16
quelle
0

Äh, die Funktion sleep () von win32 api?

Ссылка

    
ksming 30.10.2011 16:16
quelle

Tags und Links