"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment suspendre l'exécution d'un programme en C++ à l'aide des fonctions de veille ?

Comment suspendre l'exécution d'un programme en C++ à l'aide des fonctions de veille ?

Publié le 2024-10-31
Parcourir:332

How to Pause Program Execution in C   using Sleep Functions?

Recherche d'une fonction de veille en C

Dans le but de contrôler le flux d'exécution du programme, vous pouvez rencontrer le besoin de mettre le programme en pause pendant une durée spécifiée. En C , il n'existe pas d'équivalent direct à la fonction Sleep(time) couramment utilisée dans d'autres langages. Cependant, la bibliothèque standard C offre une alternative viable.

Présentation de std::this_thread::sleep_for

La bibliothèque standard C propose la fonction std::this_thread::sleep_for, qui vous permet de suspendre l'exécution du thread en cours pour une durée spécifiée. Pour l'utiliser, vous devrez inclure les en-têtes suivants :

#include 
#include 

La syntaxe de std::this_thread::sleep_for est la suivante :

void sleep_for(const std::chrono::duration& timespan);

Où timespan est un objet std::chrono::duration spécifiant la durée du sommeil. Pour créer un std::chrono::duration basé sur la milliseconde, utilisez le constructeur std::chrono::milliseconds:

std::chrono::milliseconds timespan(111605);

À l'aide de ces composants, vous pouvez arrêter l'exécution de votre programme pendant l'intervalle de temps souhaité :

std::this_thread::sleep_for(timespan);

Notez que std : :this_thread::sleep_until sert de fonction complémentaire pour une synchronisation précise basée sur le temps.

Options de veille héritées (pré-C 11)

Avant l'introduction de C 11, le langage manquait de thread fonctionnalités et capacités de sommeil. Par conséquent, la solution pour suspendre l’exécution dépendait de la plateforme. Pour Windows ou Unix, vous avez peut-être utilisé quelque chose comme ceci :

#ifdef _WIN32
    #include 
    
    void sleep(unsigned milliseconds)
    {
        Sleep(milliseconds);
    }
#else
    #include 
    
    void sleep(unsigned milliseconds)
    {
        usleep(milliseconds * 1000); // takes microseconds
    }
#endif

Vous auriez pu simplifier l'implémentation en utilisant boost::this_thread::sleep de la bibliothèque Boost.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729677484. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3