[C++] Comment ne pas prendre 100% du cpu dans une boucle

Résolu
MTKMTKMTK Messages postés 21 Date d'inscription mardi 2 novembre 2004 Statut Membre Dernière intervention 7 octobre 2008 - 23 juin 2008 à 11:05
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 - 23 juin 2008 à 13:06
Bonjour,

Je suis en train de faire un projet, et j'ai une question qui me tracasse la tête depuis un moment.

Donc j'ai 2 processus, un processus de calcule, et un autre qui interprète les variable en visualisation graphique.
Les 2 processus utilise de mémoire partagée (shm) pour modifier/afficher les même variable.

Dans mon processus interface j'ai une boucle qui tourne et qui actualise graphiquement les données visuelles. Cette boucle utilise 99% de mon cpu. Donc comment faire pour qu'elle ne prenne par exemple que 10% par exemple.

La lenteur de l'exécution n'est pas un soucis dans mon cas.

Merci par avance de votre aide.

2 réponses

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
23 juin 2008 à 11:31
Salut

Ajoute un Sleep(50); dans ta boucle.
Cela signifie que tu donnes 50 ms au CPU pour faire autre chose.
Tu peux augmenter cette valeur suivant tes besoins. Bien sur, plus tu augmentes cette valeur et plus la charge du processeur diminu.

A+
Mon site internet : http://pistol.petesampras.free.fr
3
cs_darunia Messages postés 354 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 24 mars 2011 2
23 juin 2008 à 13:06
Salut

Le mieux serait encore de mettre en place un mecanisme de notification entre les 2 process ...

Quand Process A met a jour les données, il ne le notifie au processus B qui fait le traitement.

Fait une recherche sur les mecanisme de synchro (Semaphore & co) pour en savoir plus

D@runia
3
Rejoignez-nous