Hello,

Soit le main() suivant :

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;
}
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.

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.