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.
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.
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.
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