Zaktualizowana odpowiedź dla C ++ 11:
Użyj funkcji sleep_for
i sleep_until
:
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread;
using namespace std::chrono;
sleep_for(nanoseconds(10));
sleep_until(system_clock::now() + seconds(1));
}
Z tych funkcji nie ma już potrzeby, aby nieustannie dodawać nowe funkcje dla lepszej rozdzielczości: sleep
,usleep
, nanosleep
, itd. sleep_for
I sleep_until
są funkcje szablonów, które mogą przyjmować wartości z dowolnej rozdzielczości poprzez chrono
rodzajów; godziny, sekundy, femtosekundy itp.
W C ++ 14 możesz dodatkowo uprościć kod za pomocą literałów sufiksów dla nanoseconds
i seconds
:
#include <chrono>
#include <thread>
int main() {
using namespace std::this_thread;
using namespace std::chrono_literals;
using std::chrono::system_clock;
sleep_for(10ns);
sleep_until(system_clock::now() + 1s);
}
Zwróć uwagę, że rzeczywisty czas snu zależy od implementacji: możesz poprosić o spanie na 10 nanosekund, ale implementacja może zamiast tego spać przez milisekundę, jeśli to najkrótszy możliwy czas.