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 :

verouillage, deverouillage mutex


Sujet :

C++

  1. #1
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Points : 234
    Points
    234
    Par défaut verouillage, deverouillage mutex
    Bonjour,
    j'ai une classe sockrange. l'accès à une instance d'un sockrange est regulé par un mutex.
    j'ai une fonction my_read( ) qui est écrit comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    sockrange *gSockRange; // en tête de fichier
    ...
    ...
    int my_read(sockn, ... ) {
        gSockRange->lock();
             err = SSL_read( ..) ;
             if(err < 1) {
                ...
              goto fail;
             }
             fail:
               return -1;
    }
    Ma question :
    - à quel moment je dois faire un gSockRange->unlock()?-
    - Est ce que je ne suis pas obligé de le faire <=> return -1 fait implicitement un unlock( )

    Merci d'avance.

  2. #2
    screetch
    Invité(e)
    Par défaut
    il faut appeler unlock a chaque "return"
    c'est pour cela que l'on utilise souvent le RAII (voir sur wikipedia ou n'importe ou):
    une petite classe avec un constructeur et un destructeur, que l'on met sur la pile. Lorsque la variable est créée, le constructeur est appelé automatiquement
    Lorsque la variable est detruite (c'est a dire automatiquement a chaque return) le destructeur est appelé comme par magie.

    exemple:
    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
    sockrange *gSockRange; // en tête de fichier
    struct SockRangeLock
    {
      SockRangeLock() { gSockRange->lock(); }
      ~SockRangeLock() { gSockRange->unlock(); }
    };
    ...
    ...
    int my_read(sockn, ... ) {
        SockRangeLock autolock; // va appeler le constructeur et le destructeur magiquement aux bons endroits
             err = SSL_read( ..) ;
             if(err < 1) {
                ...
              goto fail;
             }
             fail:
               return -1;
    }

Discussions similaires

  1. [boost::threads] verouillage et déverouillage d'un mutex
    Par méphistopheles dans le forum Boost
    Réponses: 10
    Dernier message: 29/05/2009, 18h27
  2. Utilisation des Mutex
    Par jordy16 dans le forum C++Builder
    Réponses: 3
    Dernier message: 09/12/2004, 09h02
  3. Verouillage de formulaire et sous formulaire
    Par Mattdesoibs dans le forum IHM
    Réponses: 3
    Dernier message: 15/10/2004, 10h22
  4. Temporisation pendant verouillage de l'objet matable
    Par Rdjedidene dans le forum Administration
    Réponses: 14
    Dernier message: 09/06/2004, 10h52
  5. Pb 6500 verouillages de pages par seconde
    Par Laurent MALAVASI dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 22/07/2003, 15h03

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