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 gibt es keine Notwendigkeit mehr, ständig neue Funktionen für eine bessere Auflösung hinzuzufügen: sleep
, usleep
, nanosleep
usw. sleep_for
und sleep_until
sind Vorlagenfunktionen, die Werte von jeder Auflösung über chrono
Typen annehmen können; Stunden, Sekunden, Femtosekunden usw.
In C++ 14 Sie können weiterhin den Code mit den wörtlichen Suffixe vereinfachen für nanoseconds
und 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 Schlaf auf das hängt Implementierung: Sie können um 10 Nanosekunden bitten zu schlafen, aber eine Implementierung könnte am Ende für eine Millisekunde schlafen, wenn das die kürzeste ist.
Es hängt davon ab, welche Plattform (OS) und welche Bibliotheken Sie zur Verfügung haben. –