Обновленный ответ для 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 наносекунд, но реализация может вместо этого спать на миллисекунду, если это самое короткое из возможных значений.