pthread_create et pointeur
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.
Code:
temp=pthread_create(&philo[c],NULL,philosophe,&c);
&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.
Voici la fonction de philosophe :
Code:
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++;
}
} |
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.
Si vous pouviez m'expliquer.
(je suis sous ubuntu)
Merci