Bonjour à tous,
J'ai un petit problème quant à l'utilisation des threads. Mon code de base et de ce type:
Ce que je souhaiterais c'est avoir un thread par tableauObjets[i] pour exécuter maMethode(). J'arrive à réaliser cela grâce à ce code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 void ObjetPrincipal::maFonction() { for(int i=0; i<10; i++) { tableauObjets[i]->maMethode(); //On a : vector< Objet* > tableauObjets; } } void ObjetPrincipal::bouclePrincipal() { for(int k=0;k<5000;k++) { //.... maFonction(); //... } }
Ce code marche mais est plus long que si je n’utilisais pas de threads (j'ai un processeur double coeur). Je pense que cela est dû au fait que je recréé de nouveau threads à chaque fois. J'ai essayé de les réutiliser mais je n'y arrive pas, comment faut-il faire?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 void* start_thread(void* arg) { static_cast<Objet*>(arg)->maMethode(); pthread_exit(NULL); } void ObjetPrincipal::maFonction() { int i; pthread_t thread[10]; for(i = 0 ; i < 10 ; i++) pthread_create (&thread[i], NULL, start_thread, tableauObjets[i]); for(i = 0 ; i < 10 ; i++) pthread_join (thread[i], NULL); } void ObjetPrincipal::bouclePrincipal() { for(int k=0;k<5000;k++) { //.... maFonction(); //... }
Merci d'avance pour votre aide.
Partager