Ravaner
Messages postés11Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention20 décembre 2008
-
19 déc. 2008 à 10:54
Ravaner
Messages postés11Date d'inscriptionjeudi 12 janvier 2006StatutMembreDernière intervention20 décembre 2008
-
20 déc. 2008 à 08:44
Bjer à tous. Je développe en C++ pas mal de programmes de calcul qui consomment énormément de temps CPU. Lorsque je lance l'un d'eux, XP ne peut pas reprendre la main avant leur achèvement complet. Que dois-je modifier pour que mes programmes tout en tournant autorisent d'autres à tourner également ?
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 19 déc. 2008 à 15:04
Salut,
Sleep permet de bloquer l'exécution d'un thread pour une certaine durée. Si tu mets des Sleep(1) un peu de partout (Dans les boucles, pour qu'elle soit appelée à chaque tour, tu peux libérer le processeur pour les autres threads).
Forcément, ton programme sera plus long : tu perds au moins une milliseconde de temps CPU... Mais justement la CPU ne sera pas scotché, et tu peux te retrouver avec une consommation CPU intéressante, genre 10% ou autre : tout dépend de la fréquence d'appel.
Un compromis est d'appeler Sleep(0). Cela demande à Windows de regarder si un autre thread ne voudrait pas un peu de temps CPU. "Allez y les gars c'est votre tour".