Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1399 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Synchronisation de beaucoup de processus avec les Event

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Synchronisation de beaucoup de processus avec les Event

n°1383985
XK
Posté le 08-06-2006 à 18:10:55  profilanswer
 

Bonjour
 
Je présente mon programme : il y a le thread principal, à un moment donné il créé un nouveau thread. Celui-ci entre dans un boucle ou il créé à chaque tour un nouveau thread du type PING, chacun chargé donc de faire un ping sur une machine différente.
J'ai essayé de de faire une variable globale "HANDLER thread_end".
Le thread principal, après avoir lancé le thread qui s'occupe de lancer à son tour la floppée de threads, entre dans une boucle en faisant un CreatEvent sur la variable thread_end puis entre en pause avec WaitForSingleObject.
J'espérais que chaque thread de PING, une fois terminé, fasse chaqu'un à son tour un SetEvent sur thread_end. Avec un compteur dans la boucle du thread principal, il serait possible de compter combien de threads PING ont terminés et une fois le nombre total atteind le thread principal se termine. Malheureusement ça ne fonctionne pas les threads PING se terminent, certains sont comptés mais d'autres non donc le thread principal attend de nouveau évènements alors que tout le monde a terminé... :(
 
Une idée pour m'aider avec tous ces threads qui n'en font qu'à leur tête? Merci :hello:  

mood
Publicité
Posté le 08-06-2006 à 18:10:55  profilanswer
 

n°1384028
SquiZZ
Posté le 08-06-2006 à 19:32:25  profilanswer
 

tu peux utiliser les fonctions WaitForSingleObject et WaitForMultipleObjects directement sur le handle de tes threads.
 

Code :
  1. #include <windows.h>
  2. #include <stdio.h>
  3. DWORD WINAPI Thread(LPVOID pParam)
  4. {
  5. Sleep((int)pParam * 1000);
  6. printf("Thread %d fini\n", (int)pParam);
  7. return 0;
  8. }
  9. int main(int argc, char* argv[])
  10. {
  11. HANDLE threads[5];
  12. int i;
  13. for(i=0; i<5; ++i)
  14.  threads[i] = CreateThread(NULL, 0, Thread, (LPVOID)i, 0, NULL);
  15. WaitForMultipleObjects(5, threads, TRUE, INFINITE);
  16. for(i=0; i<5; ++i)
  17.  CloseHandle(threads[i]);
  18. printf("Fin programme\n" );
  19. return 0;
  20. }


Message édité par SquiZZ le 08-06-2006 à 19:46:10

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Synchronisation de beaucoup de processus avec les Event

 

Sujets relatifs
Probleme de synchronisation ecriture tubes / multi threads forkL attente processus
petite question toute bête en java (synchronisation)Ouvrir une nouvelle fenêtre shell avec un nouveau processus?
PID d'un Processus sous WindowsProblème avec exec(): lancement d'un processus
Processus WinWord ne se ferme pasEmpecher un processus de se lancer
Creer un user eventprocessus et boucle infinie -> ressources CPU à 100% ou pas?
Plus de sujets relatifs à : Synchronisation de beaucoup de processus avec les Event


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR