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 :

Pratique d'utilisation des mutexes


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut Pratique d'utilisation des mutexes
    Bonjour,

    Je vais devoir ajouter un mutex dans mon programme pour partager l'utilisation d'une structure dans mes différents threads.
    Il me faut donc créer un mutex_t dans ma fonction principale (celle qui déclare la structure en question et qui créer les threads).

    Je voudrais savoir:

    1. Est ce qu'il y a besoin d'un mutex pour lire des données dans la structure ? J'ai lu que non, mais qu'arrive-t-il quand un thread va aller lire une donnée en cours de modification par un autre thread ?
    2. Pour partager mon mutex, il va falloir que je le passe en argument dans tous les threads sous forme de pointeur. Pour l'instant, le seul et unique argument de mes threads et ma structure partagée. Est ce que je peux inclure le pointeur vers mutex_t comme membre de ma structure, ou alors il est nécessaire que je passe à mes threads deux infos: la structure d'un coté, et le mutex_t de l'autre coté ?


    Merci à vous.

  2. #2
    Membre éprouvé Avatar de krieg
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Par défaut
    Salut,
    en effet, tu n'as pas besoin de prendre de mutex en lecture mais la valeur lue, est soit la nouvelle valeur soit l'ancienne.
    Tu peux inclure ton mutex dans ta structure.

    Je ne sais exactement ce que tu manipules comme champ mais est ce qu'un compare and swap ne te serai pas suffisant?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Je ne connais pas du tout le terme "Compare and swap", peux-tu l'expliquer ?

    Ma structure contient que des données de base, à savoir:
    1. Des entiers
    2. Des tableaux de structure contenant des entiers, et des chaines de caractères (de taille fixée par une constante)

  4. #4
    Membre éprouvé Avatar de krieg
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 75
    Par défaut
    Si tu compile avec gcc, tu as des fonctions comme :
    __sync_bool_compare_and_swap(int* test,int old, int new).

    qui fonctionne avec des int, long, long long.
    Cela affect a *test la valeur new de façon atomic si *test est égale a old.
    Avec cela plus besoin de mutex.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    433
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 433
    Par défaut
    Ok je ne connaissait pas.
    Je vais rester plus classique avec les mutexs.
    Merci pour ces réponses

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

Discussions similaires

  1. Dans quels cas est-on obligés d'utiliser des mutex ?
    Par kidpaddle2 dans le forum Threads & Processus
    Réponses: 3
    Dernier message: 18/07/2010, 20h05
  2. Utilisation des mutex
    Par Athel dans le forum C
    Réponses: 15
    Dernier message: 17/02/2010, 21h11
  3. Réponses: 4
    Dernier message: 21/08/2009, 10h48
  4. Utilisation des mutex et des threads
    Par Chen norris dans le forum SDL
    Réponses: 4
    Dernier message: 31/08/2007, 00h00
  5. Utilisation des Mutex
    Par jordy16 dans le forum C++Builder
    Réponses: 3
    Dernier message: 09/12/2004, 09h02

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