IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

pthread_create et pointeur


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
     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 : 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++;
        }
    }
    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

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("\t\t le philospohe %d pense.\n",(int *)i);
    (int *)i est un pointeur (transtypage d'un void*) qui contient l'adresse de la valeur (numéro du philosophe). Il faut prendre le contenu de cette adresse pour avoir la valeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("\t\t le philospohe %d pense.\n",*(int *)i);
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    MERCI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pointeurs
    Par ghost74 dans le forum C
    Réponses: 3
    Dernier message: 14/12/2002, 02h52
  2. Pointeur vers un tableau
    Par Nikos dans le forum C
    Réponses: 3
    Dernier message: 09/12/2002, 00h43
  3. [Turbo Pascal] Allocation et désallocation de pointeurs dans une fonction
    Par neird dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 17/11/2002, 20h14
  4. djgpp et pointeurs far -2
    Par elvivo dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 29/07/2002, 22h43
  5. djgpp et pointeurs far
    Par elvivo dans le forum C
    Réponses: 2
    Dernier message: 13/07/2002, 00h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo