Dormir durante milisegundos

Resuelto Prasanth Madhavan asked hace 13 años • 19 respuestas

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++?

Prasanth Madhavan avatar Nov 15 '10 19:11 Prasanth Madhavan
Aceptado

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.

HighCommander4 avatar May 16 '2012 07:05 HighCommander4

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);
Niet the Dark Absol avatar Nov 15 '2010 12:11 Niet the Dark Absol

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.

MOnsDaR avatar Nov 15 '2010 12:11 MOnsDaR

En Unix puedes usar usleep.

En Windows existe Sleep.

INS avatar Nov 15 '2010 12:11 INS

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);
Martin Flaska avatar May 27 '2020 16:05 Martin Flaska