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

POSIX C Discussion :

Probleme de passage d'arguments dans un thread [Débutant(e)]


Sujet :

POSIX C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Par défaut Probleme de passage d'arguments dans un thread
    Bonjour,
    J'essaye de créer des threads dans mon application.
    Voici des extraits de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /* --
      Structure des parametres que reçoit un thread
    -- */
    typedef struct
    {      char *fichier;
    	char c;
    	char v;
    } paramsThread;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /* --
      Routine du thread
    -- */
    void *ecriture(void *p)
    {
    	paramsThread params = p;
    	printf("Contenu de la variable: %s",params.fichier); //TEST QUI NE MARCHE PAS
            //.....
    }
    Lancement du thread [extrait de code]
    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
    20
    21
    22
    23
    24
     
    	paramsThread arguments;
            int nb_threads = 4;
    	pthread_t threads[5]; // on prevoit de créer jusqu'a 5 threads
    	int erreur;
            int *resultat;
     
    	// on mémorise dans la structure du thread ces 2 valeurs:
     
    //proviennent d'un autre endroit du programme
    		arguments.c = champ;	
    		arguments.v = valeur;
     
    		for(n=1; n<=nb_threads; n++) // on créer les X threads
    		{
    			fichier = argv[n];
    			arguments.fichier = argv[i+n];
     
                            erreur = pthread_create (&threads[n], NULL, ecriture, &arguments);
                            if (erreur != 0) fprintf(stderr,"Echec creation de thread: %d\n",erreur);
                            pthread_join (threads[n], (void **)&resultat);
                            printf ("Resultat: %d\n", *resultat);
                            free (resultat);
                    }
    Le problème est que je n'arrive pas à retrouver mes variables champ, valeur et fichier... savez-vous pourquoi ?

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Et si tu passes par un pointeur dans ta routine du thread:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paramsThread * params = p;
    ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Il faudrait un code complet minimal et compilable qui expose le problème. Sinon ce sera trop difficile de comprendre le problème.

    Par exemple, tu utilises une variable i qui sort de nul part. Comment veux-tu qu'on comprenne ce qui ne va pas ?

    Jc

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par TheBAT
    J'essaye de créer des threads dans mon application.
    Voici des extraits de code:
    <...>Le problème est que je n'arrive pas à retrouver mes variables champ, valeur et fichier... savez-vous pourquoi ?
    http://emmanuel-delahaye.developpez.com/pthreads.htm
    et surtout
    http://emmanuel-delahaye.developpez....ds.htm#donnees

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Par défaut
    Merci pour les liens

Discussions similaires

  1. Probleme de passage d'argument
    Par dr971 dans le forum C++
    Réponses: 3
    Dernier message: 05/04/2007, 20h25
  2. Gros probleme de passage d'argument
    Par clemsye dans le forum Ogre
    Réponses: 3
    Dernier message: 06/01/2007, 12h00
  3. Passage de paramètres dans un thread
    Par innosang dans le forum POSIX
    Réponses: 1
    Dernier message: 04/01/2007, 15h13
  4. Probleme de passage d'arguments
    Par izorus dans le forum C++
    Réponses: 10
    Dernier message: 20/06/2006, 10h32
  5. Problème de passage d'argument a un thread
    Par goof_22 dans le forum SDL
    Réponses: 2
    Dernier message: 19/04/2006, 17h59

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