Bonjour, est-il plus économique en puissance de calcul pour introduire un délai dans un programme d'utiliser une boucle avec un comptage ou une bibliothèque gérant le temps telle que chrono ?
Version imprimable
Bonjour, est-il plus économique en puissance de calcul pour introduire un délai dans un programme d'utiliser une boucle avec un comptage ou une bibliothèque gérant le temps telle que chrono ?
Salut,
Depuis l'arrivée de C++11, la seule manière correcte d'introduire un délais dans un programme, du moins, si tu ne veux pas mettre tout ton système à genoux pour cause d'utilisation maximale de tous les coeurs disponibles, c'est de passer par std::this_thread::sleep_for() ou std::this_thread::sleep.
Bien sur, si tu ne disposes pas de la possibilité d'utiliser C++11 ou ultérieur (ce qui serait vraiment dommage, l'idéal étant de pouvoir carrément disposer de C++14 au minimum), il faudra sans doute te tourner vers une bibliothèque tierce, voire deux, car il s'agira sans doute de disposer d'un thread et d'un système de calcul de temps ;)
Re,
avec ce code:
Sous Linux compilant avec gcc 11 comme suggéré voici la commande utilisé g++ -std=c++11 programme.cpp -o programme, j'obtiens les 3 erreurs suivantes: ‘chrono_literals’ is not a namespace-name / expected namespace-name before ‘;’ token / unable to find numeric literal operator ‘operator""s’. Également une note est laissée en fin: use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes donnant encore les mêmes erreurs une fois les options explorées.Code:
1
2
3
4
5
6
7
8
9 #include <iostream> #include <string> #include <chrono> #include <thread> int main(){ using namespace std::chrono_literals; std::this_thread::sleep_for(2s); return 0;}
std::chrono_literals fait partie de c++14, donc -std=c++14 comme option de compilation.
N'hésite pas à consulter la doc.