Bonjour,
J'ai un petit problème lors de l'utilisation de threads.
Je dois "calculer" une image, mais lorsque j’essaie de faire calculer l'image par plusieurs threads, ça ne fait vraiment pas ce que je veux. Je suppose donc que je dois les synchroniser mais je ne vois pas trop comment faire. J'ai essayé d'utiliser une barrière mais dans ce cas la plus rien ne marche.

Quand je n'utilise pas de thread ça marche à peu près (pas toute l'image car mon calcule doit être faux mais sur le reste c'est bon).
Code sans thread qui marche à peu près:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
    for(j =1; j<=nb_part; j++)
    {
	update_map(maps[*image_en_cours], maps[1 - *image_en_cours], 1, (j-1)*((ys-1)/(nb_part)), xs-1, j*((ys-1)/(nb_part)), xs, ys);
 
    }

Code avec thread qui ne fait pas ce que je veux:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
............
............
    for(j =1; j<=nb_part; j++)
    {
       threadT->ydeb=(j-1)*((ys-1)/(nb_part));
       threadT->yend=j*((ys-1)/(nb_part));
       pthread_create(&tab_thread[j-1], NULL, appel_thread_travail, (void*)threadT);
    }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
   void appel_thread_travail(void * toto)
   {
	struct pour_update * threadT = (struct pour_update *)toto;
	update_map(threadT->fromMap, threadT->toMap, threadT->xdeb, threadT->ydeb,    threadT->xend, threadT->yend, threadT->xsize, threadT->ysize);
  }
Voilà, si quelqu'un voit d’où peut venir mon problème ce serait sympa .
Merci.