Una respuesta actualizada para C ++ 11:
Utilice las funciones sleep_for
y 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));
}
Con estas funciones ya no hay necesidad de añadir continuamente nuevas funciones para una mejor resolución: sleep
, usleep
, nanosleep
, etc sleep_for
, y sleep_until
son funciones de plantilla que pueden aceptar valores de cualquier resolución a través de chrono
tipos; horas, segundos, femtosegundos, etc.
En C ++ 14, puede simplificar aún más el código con los sufijos literales para nanoseconds
y 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);
}
Tenga en cuenta que la duración real de una suspensión depende de la implementación: puede solicitar dormir durante 10 nanosegundos, pero una implementación podría terminar durmiendo durante un milisegundo, si eso es lo más corto que puede hacer.