Dormir durante milisegundos
Sé que la sleep(x)
función POSIX hace que el programa entre en suspensión durante x segundos. ¿Existe una función para hacer que el programa duerma durante x milisegundos en C++?
En C++11, puedes hacer esto con las funciones de biblioteca estándar:
#include <chrono>
#include <thread>
std::this_thread::sleep_for(std::chrono::milliseconds(x));
Claro y legible, ya no es necesario adivinar qué unidades sleep()
toma la función.
Tenga en cuenta que no existe una API C estándar para milisegundos, por lo que (en Unix) tendrá que conformarse con usleep
, que acepta microsegundos:
#include <unistd.h>
unsigned int microseconds;
...
usleep(microseconds);
Para permanecer portátil, puedes usar Boost::Thread para dormir:
#include <boost/thread/thread.hpp>
int main()
{
//waits 2 seconds
boost::this_thread::sleep( boost::posix_time::seconds(1) );
boost::this_thread::sleep( boost::posix_time::milliseconds(1000) );
return 0;
}
Esta respuesta es un duplicado y se ha publicado anteriormente en esta pregunta . Quizás allí también puedas encontrar algunas respuestas útiles.
En Unix puedes usar usleep
.
En Windows existe Sleep
.
Desde C++14 usando std y también sus literales numéricos:
#include <chrono>
#include <thread>
using namespace std::chrono_literals;
std::this_thread::sleep_for(123ms);