Cela dépend de ce que vous voulez faire dans cette boucle.
Si vous attendez à l'intérieur de la boucle (c.-à-d. Si vous enfoncez une touche), votre mécanisme gaspillera les ressources du système et ne donnera rien en retour. il suffit de dormir, mais de préférence, un événement qui déclenche la réalisation de quelque chose de significatif.Par exemple, une opération de fichier (stdin est aussi un fichier) serait un mécanisme portable, qui cédera la place à d'autres applications jusqu'à ce que des données soient disponibles. plus spécifique, il peut être nécessaire de plonger dans des sémaphores ou des signaux qui sont souvent dépendants du système d'exploitation.Une couche d'abstraction peut résoudre ce problème
Si vous faites quelque chose d'utile (c'est-à-dire de traiter beaucoup de données), alors 100% CPU seulement signifie que le processeur est nous ed de la manière la plus efficace. Vous pouvez compter sur le système d'exploitation pour céder la place à d'autres tâches prioritaires. L'utilisation d'une fonction comme le sommeil réduira l'utilisation du processeur, mais votre application sera plus lente. Il faudra pour obtenir un compromis entre la performance acceptable et la charge du processeur. La vitesse d'exécution maximale sera définie par votre paramètre de veille, et non plus par la vitesse du processeur. En outre, si la puissance est une préoccupation (c'est-à-dire la durée de vie de la batterie), alors cela nécessitera que le CPU se réveille (fin de la période de sommeil) sans travail à effectuer; c'est-à-dire un gaspillage différent des ressources du système.
Vous devez utiliser un objet de synchronisation, un que vous pouvez attendre jusqu'à ce qu'il soit signalé, de cette façon vous ne consommera pas du tout CPU. –
Qu'est-ce que 'DONE' et qu'est-ce qui le rendra différent de zéro? Vraisemblablement, il est logique de continuer le traitement jusqu'à ce que le 'vérifier les choses' évalue quelque chose qui définit DONE comme étant non nul? –
Lasse V. Karlsen: Votre solution semble avoir du sens (elle a probablement beaucoup de sens, mais je n'ai pas cette connaissance). Pourriez-vous élaborer? Dois-je enquêter sur les discussions? (Un exemple serait bien) Charles Bailey: DONE devrait être un int (fait au lieu de DONE) et il serait mis à 1 lorsque l'utilisateur a choisi de quitter l'application, par exemple. Je suis désolé si je ne peux pas m'expliquer assez bien .. – pwseo