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

Threads & Processus C++ Discussion :

Problème de conception avec les mutex de Boost


Sujet :

Threads & Processus C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Par défaut Problème de conception avec les mutex de Boost
    Bonjour à tous,

    Je fais évoluer une application multi-threadée exploitant les threads de Boost. Initialement, cette application exploitait les threads de la librairie wx::widget.

    Mon soucis de conception est le suivant:

    Je dispose d'une classe A et d'une classe B. Les méthodes de ma classe A appellent des getteurs de la classe B.

    Depuis un thread, dans une méthode de la classe A, j'appelle successivement plusieurs getteurs d'une instance de la classe B, potentiellement modifiée dans un autre thread. J'utilise donc un mutex pour éviter que l'un des attributs de la classe B ne soit modifiés lors de l'appel de son accesseur par la classe A. Actuellement, ce mutex est encapsulé dans un classe verrou. Cependant, ma modélisation ne semble pas compatible avec le design pattern "Scope Locking"
    de boost. Schématiquement mon code est le suivant:


    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
    class A{
     
    private:
     
    	B b;
    	int ia;
    	int ja;
     
    public:
     
    	void maj(){
    		b.bloquerMaj();
    		ia = b.getIB();
    		ja = b.getJB();
    		b.debloquerMaj();
    	}
     
    };
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    class B{
     
    private:
     
    	int ib;
    	int jb;
    	Verrou verrou;
     
    public:
     
    	int getIB(){
    		return ib;
    	}
     
    	int getJB(){
    		return jb;
    	}
     
            void setIB(int ib){
    		this->ib = ib;
    	}
     
    	void setJB(int jb){
    		this->jb = jb;
    	}
     
    	void bloquerMaj(){
    		verrou.lock();
    	}
     
    	void debloquerMaj(){
    		verrou.unlock();
    	}
     
    };
    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
    class Verrou{
    private:
     
        wxMutex mutex;
     
    public:
     
        /** Prise du verrou. */
        virtual void lock(){
    		mutex.Lock();
    	}
     
        /** Relachement du verrou. */
        virtual void unlock(){
    		mutex.Unlock();
    	}
    }

    Mon impératif est de garder ma classe Verrou en la faisant exploiter les mutex de Boost, bien que je ne vois pas comment faire...

    Toute suggestion est la bienvenue,
    Cordialement.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 127
    Par défaut
    J'ai résolu mon problème simplement en remplaçant le wxMutex de ma classe Verrou par un boost::mutex et en appelant lock et unlock directement sur ce mutex, en oubliant les scoped_lock. Tout compile et l'exécution marche sans soucis.

    Cordialement,

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

Discussions similaires

  1. problèmes avec les Mutex
    Par Daxmawale dans le forum Bibliothèques, systèmes et outils
    Réponses: 2
    Dernier message: 29/03/2014, 18h26
  2. Réponses: 5
    Dernier message: 04/03/2007, 15h33
  3. Problèmes de pointeurs avec les arbres
    Par thierry57 dans le forum C
    Réponses: 17
    Dernier message: 22/12/2005, 23h35
  4. probléme d'enregistrement avec les chexkbox.
    Par pmboutteau dans le forum ASP
    Réponses: 16
    Dernier message: 18/10/2005, 15h05
  5. Réponses: 6
    Dernier message: 19/05/2005, 11h06

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