c sleep how use sleep function c programs
Ce didacticiel C ++ Sleep abordera la fonction Sleep en C ++ et verra comment mettre un thread en veille. Nous découvrirons également les autres fonctions à savoir. tu dors:
Tout programme informatique qui est un processus, une tâche ou un thread peut «dormir» ou entrer dans un état inactif pendant un temps spécifique. L'exécution est suspendue, pendant cette période. L'exécution sera reprise lorsque l'intervalle de temps de sommeil expirera ou un signal ou une interruption provoquera la reprise de l'exécution.
Pour mettre un programme (tâche, processus ou thread) en veille, nous utilisons un appel système en veille. Un appel de système de veille typique prend le temps comme paramètre qui indique combien de temps le programme a besoin pour dormir ou rester inactif.
=> Consultez la série complète de formations C ++ ici.
Nous avons également les fonctions usleep () et thread :: sleep dont nous parlerons dans ce tutoriel. Le temps fourni est principalement en millisecondes, microsecondes ou secondes et en fonction de cela, nous avons diverses fonctions qui peuvent mettre le programme en veille.
Ce que vous apprendrez:
- Fonction Sleep ()
- Fonction Usleep ()
- Thread Sleep (sleep_for & sleep_until)
- Questions fréquemment posées
- Conclusion
- lecture recommandée
Fonction Sleep ()
Le langage C ++ ne fournit pas sa propre fonction de veille. Cependant, les fichiers spécifiques du système d'exploitation tels que unistd.h pour Linux et Windows.h pour Windows fournissent cette fonctionnalité.
Lorsque nous utilisons le système d'exploitation Linux ou UNIX, nous devons inclure le fichier d'en-tête «unistd.h» dans notre programme pour utiliser le dormir () fonction.
Lors de l'utilisation du système d'exploitation Windows, nous devons inclure l'en-tête «Windows.h» pour utiliser la fonction sleep (). Donc, pour écrire un programme multiplateforme, nous pouvons avoir le code comme indiqué ci-dessous afin que l'un ou l'autre des en-têtes soit utilisé.
#ifdef _WIN32 #include #else #include #endif
La fonction veille est décrite ci-dessous:
Prototype de fonction:
sommeil non signé (secondes non signées);
Paramètres:
secondes => Durée en secondes pendant laquelle l'exécution du programme est suspendue
Valeur de retour:
0 => Si le sommeil revient lorsque le temps demandé s'est écoulé.
Si le sommeil est interrompu par un signal, une quantité non dormante (période de temps demandée spécifiée moins le temps réel écoulé) est renvoyée.
Description:
La fonction sleep () oblige le programme ou le processus dans lequel elle est appelée à suspendre temporairement son exécution pendant une période de temps en secondes spécifiée par le paramètre de fonction. L'exécution est suspendue jusqu'à ce que le temps demandé soit écoulé ou qu'un signal ou une interruption soit délivré à la fonction.
Cependant, si le système a programmé une autre activité, le temps de suspension peut être plus long.
Vous trouverez ci-dessous un programme C ++ qui utilise la fonction sleep entre deux instructions cout.
quel est le meilleur serveur de messagerie
#ifdef _WIN32 #include #else #include #endif #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); sleep(10); cout << 'World'; cout << endl; return 0; }
Production:
Bonjour le monde
Dans le programme ci-dessus, nous donnons une commande de veille avec une période de 10 secondes après l'impression de «Hello». Le compilateur attend 10 secondes après avoir imprimé 'Hello', puis imprime le 'World'.
Noter: Les lecteurs doivent exécuter ce programme pour comprendre réellement le fonctionnement de la commande sleep
Fonction Usleep ()
L'en-tête «unistd.h» fournit encore une autre fonction «usleep ()» qui peut suspendre l'exécution d'un programme pendant une période de temps spécifiée. Le fonctionnement est similaire à la fonction sleep () déjà décrite.
Prototype de fonction: int usleep (useconds_t useconds);
Paramètres: useconds => Nombre de microsecondes pendant lesquelles l'exécution est suspendue
Valeur de retour:
0 => Usleep est revenu avec succès.
-1 & errno => La fonction a échoué.
Description:
La fonction usleep () suspend l'exécution du thread appelant pendant useconds microsecondes ou jusqu'à ce que le signal soit délivré au thread qui interrompt l'exécution.
La granularité des valeurs de temporisation utilisées dans la fonction usleep peut être spécifique à l'implémentation. Si nous avons besoin d'une granularité plus fine que celle spécifiée par l'implémentation, la valeur réelle du minuteur est arrondie à la valeur suivante prise en charge.
Ci-dessous, un exemple illustrant la fonction usleep ().
#include #include #include using namespace std; int main() { cout << 'Hello '; cout.flush(); usleep(10000); cout << 'World'; cout << endl; return 0; }
Production:
Bonjour le monde
Comme indiqué dans la sortie ci-dessus, nous spécifions la période de temps comme 10000 microsecondes pour la fonction usleep et tout comme le programme précédent utilisant la fonction sleep, nous imprimons la chaîne «Hello World».
Thread Sleep (sleep_for & sleep_until)
C ++ 11 fournit des fonctions spécifiques pour mettre un thread en veille.
Il y a deux fonctions:
Std :: this_thread :: sleep_for
Prototype de fonction:
template void sleep_for( const std::chrono::duration& sleep_duration );
Paramètres: sleep_duration => Durée du sommeil
Valeur de retour: rien
Description: La fonction sleep_for () est définie dans l'en-tête. La fonction sleep_for () bloque l'exécution du thread courant au moins pendant le temps spécifié, c'est-à-dire sleep_duration.
Cette fonction peut se bloquer pendant une durée plus longue qu'une durée spécifiée en raison d'activités de planification ou de délais de contention de ressources.
Un exemple C ++ démontrant l'utilisation de sleep_for est donné ci-dessous:
#include #include #include using namespace std; int main() { cout << 'Hello I'm waiting....' << endl; this_thread::sleep_for(chrono::milliseconds(20000) ); cout << 'Waited 20000 ms
'; }
Production:
Bonjour, j'attends….
Attendu 2000 ms
Dans le programme ci-dessus, nous avons une durée de sommeil spécifiée de 20000 millisecondes. Cela signifie que le thread bloquera pendant 20000 millisecondes avant de reprendre l'opération.
Std :: this_thread :: sleep_until
Prototype de fonction:
template void sleep_until( const std::chrono::time_point& sleep_time );
Paramètres: sleep_time => Durée jusqu'à laquelle le thread doit être bloqué.
Valeur de retour: rien
Description: Cette fonction est définie dans l'en-tête. La fonction sleep_until () bloque l'exécution d'un thread jusqu'à ce que sleep_time soit écoulé. Comme les autres fonctions, cette fonction peut également bloquer pendant une durée plus longue qu'une durée spécifiée en raison d'activités de planification ou de délais de contention de ressources.
Un programme C ++ pour la fonction sleep_until est donné ci-dessous.
#include #include #include using namespace std; void current_time_point(chrono::system_clock::time_point timePt) { time_t timeStamp = chrono::system_clock::to_time_t(timePt); cout << std::ctime(&timeStamp) << endl; } void threadFunc() { cout<<'Current Time :: '; current_time_point(chrono::system_clock::now()); chrono::system_clock::time_point timePt = chrono::system_clock::now() + chrono::seconds(60); cout << 'Sleeping Until :: '; current_time_point(timePt); this_thread::sleep_until(timePt); cout<<'Woke up...Current Time :: '; current_time_point(chrono::system_clock::now()); } int main() { std::thread th(&threadFunc); th.join(); return 0; }
Production:
Heure actuelle :: Thu Sep 19 12:52:01 2019
Dormir jusqu'à :: Jeu Sep 19 12:53:01 2019
Je me suis réveillé… Heure actuelle :: Thu Sep 19 12:53:01 2019
Dans ce programme, nous faisons dormir le thread pendant 60 secondes, soit 1 minute. Une fois qu'une minute est terminée; thread se réveille et imprime l'heure actuelle.
Questions fréquemment posées
Q # 1) Que fait sleep () en C ++?
Répondre: La fonction Sleep () suspend l'exécution du programme pendant une période de temps spécifiée. Cette période est spécifiée comme argument de la fonction sleep ().
Q # 2) Quel est le fichier d'en-tête pour sleep en C ++?
Répondre: L'en-tête pour sleep est «unistd.h» pour le système d'exploitation LINUX / UNIX et «Windows.h» pour le système d'exploitation Windows. Pour le thread sleep qui utilise les fonctions 'sleep_for' et 'sleep_until', l'en-tête est utilisé.
Q # 3) À quoi sert #include Unistd H?
Répondre: L’en-tête «Unistd.h» est l’en-tête qui définit la fonction sleep () pour suspendre l’exécution du programme.
Conclusion
Dans ce tutoriel sur la fonction sleep (), nous avons discuté de la fonction sleep et de la fonction usleep () qui est identique aux fonctions sleep et thread sleep, sleep_for et sleep_until. Les fonctions Sleep () et usleep () sont identiques à l'exception de l'unité de temps utilisée pour spécifier le temps de sommeil.
Dans la fonction sleep (), l'heure est spécifiée en secondes, tandis que dans la fonction usleep (), l'heure est spécifiée en microsecondes. Les fonctions de thread sleep_for () suspend l'exécution du thread pendant une période de temps spécifique fournie en argument. La deuxième fonction de thread sleep_until () suspend l'exécution du thread jusqu'à ce qu'un temps spécifié se soit écoulé.
Suggestion de lecture = >> Qu'est-ce que le test de thread?
Toutes les fonctions de veille décrites peuvent mettre plus de temps à revenir en fonction de la planification ou d'autres retards spécifiques aux ressources.
=> Lisez la série de formations populaires C ++ ici.
lecture recommandée
- Tutoriel sur les fonctions principales de Python avec des exemples pratiques
- Multithreading en C ++ avec des exemples
- 10 meilleurs logiciels d'horloge gratuits pour le suivi du temps des employés
- Tutoriel QTP # 21 - Comment rendre les tests QTP modulaires et réutilisables à l'aide d'actions et de bibliothèques de fonctions
- Fonctions en C ++ avec types et exemples
- Commandes des programmes Unix Utilities: Which, Man, Find Su, Sudo (Part D)
- Opportunité d'emploi indépendant à temps partiel pour les experts Selenium
- 10 MEILLEURES applications de suivi du temps pour les pigistes (2021 SELECTIVE)