Hello,
Soit le main() suivant :
Dans la fonction que je duplique avec les thread, je génère une suite de nombre que je veux à chaque fois différente d'un thread à l'autre.
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 int main(int argc, char* argv[]) { pthread_t ta; pthread_t tb; pthread_create (&ta, NULL, task_a, NULL); pthread_create (&tb, NULL, task_b, NULL); srand (time(NULL)); generenb(NOMBRE); #if 1 pthread_join (ta, NULL); pthread_join (tb, NULL); #endif system("PAUSE"); return 0; }
Lorsque je n'ai qu'un seul thread (le a), la fonction generenb() ainsi que mon thread fonctionnent bien. Sur les deux "files", j'ai bien à chaque fois 2 nombres différents. Mais dès que je rajoute un deuxième thread, eh bien les nombres générés sont identiques (dans le thread a et b). A priori, ça me semble logique (vu que je lance une tache qui génère des nombres aléatoires, et rand() va générer dans les deux threads les même nombre).
Bref, comment contourner mon problème ? de faire en sorte que, à partir de rand() :
- threada => génère X
- threadb => génère Y
- fonction() => génère Z
au lieu de
- threada => génère X
- threadb => génère X
- fonction() => génère Z
edit 1: Après réflexion, je me demandais s'il ne serait pas possible de rajouter à un argument à ma fonction generenb, qui serait une sorte de "grain de sel", argument que je changerais à chaque appele de ma fonction.
Partager