Bonjour,

j'essaie de synchroniser 2 threads. Pour cela je lits des cours :

http://emmanuel-delahaye.developpez....-threads-c/#LV

pour ne citer que celui là et j'ai de grosses difficultés de compréhension sur les exemples, ça ressemble beaucoup plus à du C++ qu'à du C. (et je n'ai aucune notion en C++)

alors si quelqu'un pourrais me traduire un bout de l'exemple en C normale ou me dire comment comprendre, ça serait magique

Merci, cordialement

Philippe

l'exemple :
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
   struct shared sh =
   {
      .mut = PTHREAD_MUTEX_INITIALIZER,
      .synchro = PTHREAD_COND_INITIALIZER,
   };
 
   struct data da =
   {
      .nb = 5,
      .sid = "task A",
      .psh = &sh,
   };
 
   struct data db =
   {
      .nb = 4,
      .sid = "Task B",
      .psh = &sh,
   };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
      for (i = 0; i < p_data->nb; i++)
      {
         pthread_mutex_lock (&psh->mut);
         pthread_cond_wait (&psh->synchro, &psh->mut);
         printf ("                        "
                 "'%s' (%d)\n", p_data->sid, i);
         pthread_mutex_unlock (&psh->mut);
}