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 :

question sur les variables globales et les thread posix


Sujet :

POSIX C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 47
    Points : 29
    Points
    29
    Par défaut question sur les variables globales et les thread posix
    Bonjour,

    j'aimerais savoir si je dois faire un mutex pour lire
    le contenu d'une variable globale qui est utiliser par
    plusieur thread.

    je sais que lorsqu'on ecrit sur une variable partagé,
    on fait des mutex

    merci d'avance

  2. #2
    GaL
    GaL est déconnecté
    Membre à l'essai
    Inscrit en
    Juillet 2002
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 24
    Points : 19
    Points
    19
    Par défaut
    Des que tu as une variable utilisé et modifié par plusieurs Thread il faut forcement proteger l'acces a cette variable par exemple avec les mutex sinon atttention aux erreurs fatales

  3. #3
    Membre averti
    Avatar de joellel
    Profil pro
    Inscrit en
    Février 2003
    Messages
    234
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Février 2003
    Messages : 234
    Points : 338
    Points
    338
    Par défaut
    Le tout est de savoir où est le risque de conflit d'acces....

    Si ta variable est initialisée avant le lancement des threads qui vont la lire, tu n'as aucun risque, donc il est inutile de la protéger par un mutex.

    En revanche, si elle peut être mise à jour par un thread pendant que d'autres sont susceptibles de la lire, là, il faut la protéger!

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Si la variable est une constante -> inutile de la proteger.

    Si la variable est atomique, (moins de 32 bits sur une machine 32 bits en gal) il peut ne pas etre necessaire de la proteger, a condition que tous les acces soient atomique (pas de ++ ou de +=) mais uniquement des acces independents en lecture ou ecriture...

    Si la varibale est souvent lue par bcp de thread et rarement lue, un verrou (LOCK) peut etre preferable à un mutex.

    Un verrou a trois etats, libre bien sur, pris en ecriture (exclusif), ou pris en lecture. l'interet est que pluiseurs threads peuvent lire simultanement, contrairement au mutex.

  5. #5
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 332
    Points : 130 178
    Points
    130 178
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Gandalf
    a condition que tous les acces soient atomique (pas de ++ ou de +=)
    Parce que ++ n'est pas atomique ? L'assembleur Intel comporte bien une instruction INC [mémoire/registre] pourtant ?
    Idem pour +=, l'instruction assembleur ADD ne fé pas tout d'un seul coup ?
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

  6. #6
    Membre habitué Avatar de Metal Tom
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 119
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par Gandalf
    Si la varibale est souvent lue par bcp de thread et rarement lue, un verrou (LOCK) peut etre preferable à un mutex.
    Le problème des verrous est quils déplacent le problème vu que ce sont les verrous qui deviennent la donnée partagée à protéger !

    Y'a rien de tel qu'un pthread_mutex
    Tom

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

Discussions similaires

  1. demande d'information sur les variables globales
    Par ferhat.adel dans le forum CUDA
    Réponses: 3
    Dernier message: 03/12/2012, 13h48
  2. Question sur les variables globales
    Par hortencia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/02/2012, 13h13
  3. Question concernant les variables globales
    Par jhanos dans le forum Débuter
    Réponses: 2
    Dernier message: 21/09/2009, 18h47
  4. question sur les variables globales
    Par acik59 dans le forum C
    Réponses: 8
    Dernier message: 15/05/2007, 13h33
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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