820 votes

Dormir pour millisecondes

Je sais que la POSIX sleep(x) fonction rend le programme de sommeil pendant x secondes. Est-il une fonction pour rendre le programme de sommeil pour les x millisecondes en C++?

1647voto

HighCommander4 Points 9962

En C++11, vous pouvez le faire avec de la bibliothèque standard des installations:

std::this_thread::sleep_for(std::chrono::milliseconds(x));

Claire et lisible, plus besoin de deviner ce que les unités de la fonction de veille prend.

comme l'a déclaré Rhubbarb, vous aurez besoin de:

#include <chrono>
#include <thread>

522voto

Niet the Dark Absol Points 154811

Notez qu'il n'existe pas de norme API C pour millisecondes, donc (sur Unix), vous aurez à régler pour usleep, qui accepte microsecondes:

#include <unistd.h>

unsigned int microseconds;
...
usleep(microseconds);

87voto

MOnsDaR Points 3027

Pour rester portable vous pouvez utiliser Boost::Thread pour 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;
}

Cette réponse est un doublon et a été affecté à cette question avant. Vous pourriez peut-être trouver quelques utilisable réponses trop.

44voto

INS Points 5679

Dans Unix, vous pouvez utiliser usleep.

Dans Windows, il est le Sommeil.

35voto

Charles Bailey Points 244082

En fonction de votre plate-forme, vous pouvez avoir usleep ou nanosleep disponible. usleep est obsolète et a été supprimé à partir de la plus récente norme POSIX; nanosleep est préféré.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X