Bonjour,
je m'exerce de plus en plus avec C.
J'utilise pthread pour essayer de programmer le diner des philosophes. J'ai une question sur pthread_create.
&c signifie que l'on donne l'adresse de la variable c à la fonction pthread_create, puis elle passe cette même adresse à la fonction philosophe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part temp=pthread_create(&philo[c],NULL,philosophe,&c);
Voici la fonction de philosophe :
Mais je n'ai pas le numéro de mon philosophe (dans le printf). void *i renvoie bien l'adresse dune variable de type "non précisé", n'est-ce-pas ? D'où mon cast, mais ce la ne marche pas.
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 void *philosophe(void *i) /* i : numero du philosphe de 0 a N-1 */ { int j=0; while (1) /* boucle sans fin */ { printf("\t\t le philospohe %d pense.\n",(int *)i); penser(i); /* Le philosophe pense */ printf("Le philosophe %d peut-il prendre des fourchettes ? \n",(int *)i); prendre_fourchettes(i); /* prend deux fourchettes ou bloque */ printf("\t\t le philosophe %d mange. \n",(int *) i); manger(i); /* mange des spaghettis */ printf("\t\t le philosophe %d arrete de manger. \n\n",(int *) i); poser_fourchettes(i); /* repose les deux fourchettes sur la table */ j++; } }
Si vous pouviez m'expliquer.
(je suis sous ubuntu)
Merci
Partager