Bonjour,
Je réalise actuellement une application utilisant les MFC (sous Windows Xp). Mon application doit traiter des images en temps réel. Bref, mon application nécéssite plusieurs threads qui communiquent entre eux.
J'ai un thread qui doit attendre la fin de plusieurs autres avant de pouvoir continuer. Pour cela j'ai une variable globale égale au nombre de threads dans ma classe qui manage ces threads. Une fois que chacun des threads à fini son traitement il décrémente la variable. Quand celle ci est égale à 0 le traitement peut continuer.
Pour vérifier la valeur de la variable, le thread de management possede une boucle qui va vérifier à interval régulier la valeur. Un code du genre :
While(Maclasse::NombreDeThreadLance!=0);
Problème : la ca me bouffe toutes mes ressources CPU
Ok j'ajoute un Sleep :
While(Maclasse::NombreDeThreadLance!=0)Sleep(1);
Problème : Sleep(1) ne fait non pas dormir le process 1ms comme demandé mais 15ms ce qui n'est pas acceptable pour du traitement d'images en temps réelle.
La queston est : Existe il une fonction équivalante à Sleep(int) permettant de mettre en pause un process pour un temps d'environ 1ms?
Partager