Оновлена відповідь для C ++ 11:
Використовуйте функції sleep_for
та 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));
}
Чи не З допомогою цих функцій більше немає необхідності постійно додавати нові функції для кращого дозволу: sleep
, usleep
, nanosleep
і т.д. , sleep_for
і sleep_until
є функціями шаблонів , які можуть приймати значення будь-якого дозволу по chrono
типам; годин, секунд, фемтосекунд тощо.
У C ++ 14 ви можете додатково спростити код буквальними суфіксами для nanoseconds
та 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);
}
Зверніть увагу, що фактична тривалість сну залежить від реалізації: Ви можете попросити спати 10 наносекунд, але реалізація може закінчитися сном на мілісекунді, якщо це найкоротший час.