97 votes

Fonction Sleep en C++

Existe-t-il une fonction comme Sleep(time); qui met le programme en pause pendant X millisecondes, mais en C++ ?

Quel en-tête dois-je ajouter et quelle est la signature de la fonction ?

140voto

GManNickG Points 155079

Utilice std::this_thread::sleep_for :

#include <chrono>
#include <thread>

std::chrono::milliseconds timespan(111605); // or whatever

std::this_thread::sleep_for(timespan);

Il y a aussi le complément std::this_thread::sleep_until .


Avant C++11, C++ n'avait pas de concept de thread et pas de capacité de sommeil, donc votre solution dépendait nécessairement de la plate-forme. Voici un extrait qui définit une fonction sleep pour Windows ou Unix :

#ifdef _WIN32
    #include <windows.h>

    void sleep(unsigned milliseconds)
    {
        Sleep(milliseconds);
    }
#else
    #include <unistd.h>

    void sleep(unsigned milliseconds)
    {
        usleep(milliseconds * 1000); // takes microseconds
    }
#endif

Mais une méthode beaucoup plus simple avant C++11 consiste à utiliser boost::this_thread::sleep .

64voto

Jostein Topland Points 375

Vous aurez besoin d'au moins C++11.

#include <thread>
#include <chrono>

...

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

22voto

Dani Points 7744

Pour Windows :

#include "windows.h" 
Sleep(10);

Pour Unix :

#include <unistd.h>
usleep(10)

15voto

dicroce Points 11988

Sous Unix, incluez #include <unistd.h> .

L'appel qui vous intéresse est usleep() . Ce qui prend des microsecondes, donc vous devez multiplier votre valeur en millisecondes par 1000 et passer le résultat à usleep() .

11voto

Prasang Singhal Points 121

Il suffit de l'utiliser...

Il s'agit tout d'abord du unistd.h fichier d'en-tête, #include<unistd.h> Utilisez cette fonction pour mettre en pause l'exécution de votre programme pendant le nombre de secondes souhaité :

sleep(x);

x peut prendre n'importe quelle valeur en secondes.

Si vous voulez mettre le programme en pause pendant 5 secondes, c'est comme ça :

sleep(5);

Il est correct et je l'utilise fréquemment.

Elle est valable pour le C et le C++.

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