Eine aktualisierte Antwort für C ++ 11:
Verwenden Sie die sleep_for
und sleep_until
Funktionen:
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread; // sleep_for, sleep_until
using namespace std::chrono; // nanoseconds, system_clock, seconds
sleep_for(nanoseconds(10));
sleep_until(system_clock::now() + seconds(1));
}
Mit diesen Funktionen ist es nicht mehr notwendig , um immer wieder neue Funktionen für eine bessere Auflösung hinzuzufügen: sleep
, usleep
, nanosleep
usw. sleep_for
und sleep_until
sind Template - Funktionen , die Werte einer beliebigen Auflösung über akzeptieren chrono
Typen; Stunden, Sekunden, Femtosekunden usw.
In C ++ 14 können Sie den Code mit den Literal-Suffixen für nanoseconds
und weiter vereinfachen seconds
:
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread; // sleep_for, sleep_until
using namespace std::chrono_literals; // ns, us, ms, s, h, etc.
using std::chrono::system_clock;
sleep_for(10ns);
sleep_until(system_clock::now() + 1s);
}
Beachten Sie, dass die tatsächliche Dauer eines Ruhezustands von der Implementierung abhängt: Sie können 10 Nanosekunden lang nach dem Ruhezustand fragen. Eine Implementierung kann jedoch stattdessen eine Millisekunde lang schlafen, wenn dies die kürzeste Zeit ist, die sie ausführen kann.