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 gestion de variables dans un thread C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut Problème gestion de variables dans un thread C
    Bonjour à tous et toutes,

    Je suis en train d'apprendre à utiliser les threads en C, et à coup sûr, je n'ai pas compris comment sont gérées les variables au sein des threads.

    Mon programme doit permettre le lancer des billes dans une aire de jeux, chaque bille étant gérée dans un thread différent. Le cycle d'une bille consiste en sa création, son déplacement pendant un temps, puis sa destruction.

    J'arrive correctement à faire la gestion des billes dans chaque thread, les billes se déplacent correctement jusqu'au moment où la première bille qui arrive en fin de vie se fait détruire. A ce moment, le programme ne peut plus accéder aux autres billes et donc plante avec un beau "seg fault". L'impression que j'ai est que au final la bille traitée dans chaque thread serait une seul et même bille en mémoire, et donc lorsque je la détruis ce serait tout à fait normal que le programme plante.

    Par quels moyens peut ont faire en sorte qu'une bille soit unique à la fonction d'un thread ? ( afin de pouvoir les détruires dans les threads sans affecter les autres).

    je joins au poste le programme de lancer des billes avec le traitement des threads.

    Je vous remercie par avance de votre aide !
    Fichiers attachés Fichiers attachés
    • Type de fichier : c la.c (5,9 Ko, 194 affichages)

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Antoine C. Voir le message
    Par quels moyens peut ont faire en sorte qu'une bille soit unique à la fonction d'un thread ? ( afin de pouvoir les détruires dans les threads sans affecter les autres).
    Bonjour

    Contrairement à la gestion des processus, les variables d'un programme sont communes à tous les thread. Donc si dans ton programme tu écris i=10 et que dans ton thread tu écris i=15, alors i vaudra 15 pour tout le programme.

    Maintenant, rien ne t'interdit d'avoir un tableau de billes et faire en sorte que le thrad n° X gère uniquement la bille[X] du tableau...

    Accessoirement ton code c'est une horreur. Tu fais aucune gestion d'erreurs (tu sors simplement en exit si ça ne marche pas), tu as des variables globales de partout, tu as un pointeur "A" (un nom comme on le voit qui a été super recherché !!!) qui n'est pas alloué mais qui doit est utilisé de partout. Pas étonnant que ton programme parte en torche !!!
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut
    Bonjour,

    merci pour ta réponse, effectivement l'idée d'un tableau de bille peut être plus prometteuse, je vais approfondir de ce côtés ci !

    La plupart du code est issu d'un programme déjà existant et fourni pour ce TP (il s'agit d'un sujet pour appliquer des notions apprises sur les threads dans le cadre des cours). Mais bon il est vrai que je n'ai pas vraiment participé à le rendre plus beau, j'ai surement même aggravé son cas !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Par défaut
    Re - bonjour,

    voilà je pense avoir résolu mon souci concernant ce programme.

    J'ai fini par déclarer un tableau de structure (structure contenant une bille et son numéro) chaque thread ayant une structure différente en paramètre.

    également lorsqu'une bille est détruite, le thread doit donc être terminé, est ce qu'un simple pthread_exit() suffit à fermer le thread ? (afin d'empêcher un "thread zombi").

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

Discussions similaires

  1. [1.x] Problème de récupération variable dans URL
    Par missJu dans le forum Symfony
    Réponses: 11
    Dernier message: 28/11/2011, 18h31
  2. Réponses: 6
    Dernier message: 24/05/2011, 11h03
  3. Gestion des évènements dans un thread
    Par kashikai dans le forum SDL
    Réponses: 0
    Dernier message: 25/05/2009, 14h32
  4. problème gestion de pools dans weblogic
    Par moulay1426 dans le forum Weblogic
    Réponses: 1
    Dernier message: 05/01/2009, 18h10
  5. Gestion de Variables dans un script
    Par John Lee dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/03/2005, 14h17

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