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 :

problème avec tableau


Sujet :

C

  1. #1
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut problème avec tableau
    bonsoir,
    Je passe un tableau en parametre et donc je souhaite récuperer les données.pour l'instant j'ai aucun erreur de compilation mais il m'affiche pas la bonne donnée.Pouvez vous m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void* robot(void* param)
    { 
    	int *coord=(int*)param;
    	while(terrain[coord[0]][coord[1]].energie>0)
    	{
    		pthread_mutex_lock(&mutex1);
    		// gestion de ce que fait le robot
    		deplace(coord[0],coord[1]);
    		pthread_mutex_unlock(&mutex1);
    		usleep(vitesse);
    	}
    }
    et l'appel de la fonction est fait comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void *parametre;
    int coord[2];
    coord[0]=ligne;
    coord[1]=col;
    parametre=coord;	
    pthread_create(&proc,NULL,robot,parametre);

  2. #2
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    mais il m'affiche pas la bonne donnée
    Cela doit être du à une corromption mémoire... Ton tableau coord (celui que tu défini avant d'appeler pthread_create) est défini localement et donc sera détruit lorsque la fonction qui l'a créé termine.

    Es-tu sûr que cette fonction ne termine pas avant que le thread accède aux données? Une solution pour s'en assurer serait de créer dynamiquement ce tableau...

    Jc

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Non j'en suis pas sur...la seule chose sure est qu'il me renvoi des données du style -126546216 alors que je devrai avoir un entier positif.

    Sinon comment faire pour y remédier...J'ai penser à mettre coord globale mais je pense pas que ce soit la bonne solution

  4. #4
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Affiche tout le code de la fonction qui appelle pthread_create...

    Et combien de thread t'essaies de créer?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: problème avec tableau
    Citation Envoyé par Kerod
    bonsoir,
    Je passe un tableau en parametre
    Pas possible.

    http://emmanuel-delahaye.developpez.....htm#param_tab

    et donc je souhaite récuperer les données.pour l'instant j'ai aucun erreur de compilation mais il m'affiche pas la bonne donnée.Pouvez vous m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void* robot(void* param)
    { 
    	int *coord=(int*)param;
    	while(terrain[coord[0]][coord[1]].energie>0)
    	{
    		pthread_mutex_lock(&mutex1);
    		// gestion de ce que fait le robot
    		deplace(coord[0],coord[1]);
    		pthread_mutex_unlock(&mutex1);
    		usleep(vitesse);
    	}
    }
    et l'appel de la fonction est fait comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void *parametre;
    int coord[2];
    coord[0]=ligne;
    coord[1]=col;
    parametre=coord;	
    pthread_create(&proc,NULL,robot,parametre);
    Ok, c'est une façon compliquée d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int coord[2];
    coord[0]=ligne;
    coord[1]=col;
    pthread_create(&proc, NULL, robot, coord);
    Je pense que les données passées à un thread doivent être statiques ou allouées. Des données automatiques, ça va pas le faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static int coord[2];
    coord[0]=ligne;
    coord[1]=col;
    pthread_create(&proc, NULL, robot, coord);
    Pas de Wi-Fi à la maison : CPL

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    J'ai tenté en mettant coord en global et ca fonctionne correctement...
    Demain je vais tester avec le coord placé en paramètre et je vous tiens au courant

  7. #7
    Expert éminent sénior

    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 : 43
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    J 'ai tenté en mettant coord en global et ca fonctionne correctement...
    Je pense que je peux que dire (surtout pour un programme à thread):



    Sérieusement, si en global ca marche, alors je pencherais sur un problème d'allocation, tente la solution d'Emmanuel...

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ok merci pour tout vos conseils et donc j'ai fais comme Emmaneul m'a dit et cela fonctionne très bien.
    Merci encore

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

Discussions similaires

  1. Un problème avec tableau
    Par micka55 dans le forum C
    Réponses: 12
    Dernier message: 03/05/2007, 01h29
  2. [phpToPDF] Problème avec tableau
    Par frutix dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 04/04/2007, 13h10
  3. [Débutant] Problème avec tableau à deux dimensions
    Par beegees dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/12/2006, 14h06
  4. [VB] problème avec tableau
    Par fredeloy dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/05/2006, 17h43
  5. problème avec tableau dynamique
    Par akrobat dans le forum C++
    Réponses: 7
    Dernier message: 28/04/2006, 15h29

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