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++Builder Discussion :

Utilisation des Mutex


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2002
    Messages : 28
    Par défaut
    salut ... quelqu'un pourrait m'éclairer sur ce qu'est un mutex et sur comment les utiliser ( créer ) ...
    Etant débutant en programmation c++ , je suis actuellement occupé de développer un programme de facturation ...
    Au début je n'avais aucun problème au niveau de mes variables .. etc ...
    mais je commence a avoir plein d'access violation lors de l'exécution du programme .( lors d'un clic sur un dbedit dans mon cas)

    Si qq1 pouvait m'aider ce serait trop sympa de votre part

    ps : Suis sour C++ builder 6

  2. #2
    Candidat au Club
    Inscrit en
    Novembre 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 4
    Par défaut Sujet Mutrex
    La programmation de base de donnees en C++ est tres interessante.
    Les Mutex sont tres utilisees en OS .
    le Mutex est define par deux elements :
    -Un entier non negaif au depart.
    -Une file d'attente
    -Deux procedures indivisibles.

    Alors je te conseille de faire une recherche sur les mutex ,Si je te donne
    ici les codes sources des deux procedures tu n'avancerai pas .
    Au revoir
    "Lire impeu ,puis essayer "

  3. #3
    Membre expérimenté
    Profil pro
    Enculeur de mouches
    Inscrit en
    Septembre 2003
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Enculeur de mouches

    Informations forums :
    Inscription : Septembre 2003
    Messages : 133
    Par défaut
    Pour l'utilisation précise (code et autre) je te laisse chercher...
    Voici quelque principe généraux (et théorique).

    Lorsqu'on crée un programme multi-thread par exemple, ou en général, lorsqu'une ressource peut être utilisée par plusieurs utilisateurs simultanéments, il peut y avoir des problèmes de conflits.

    Exemple : un document word est partagé, via le Net, entre plusieurs utilisateurs qui le modifient simultanément. Immaginons que deux utilisateurs remarque ensemble, mais sans communiquer entre eux, qu'un mot du texte est incorrect, et se mettent à le corriger en même temps... Ce la peut créer un beau bordel !!!

    Toute ressource partagée posséde donc un indicateur, disons un drapeau (booléen) un peu comme -c'est une image- celui qui existe sur les boites aux lettres de nos -hum...- amis les 'Ricains... Tant que les différents acteurs du système accède la ressource en lecture, il n'y a de soucis.
    Par contre, dès qu'un des acteurs cherche à modifier la ressource, il doit indiquer qu'elle est temporairement inaccéssible (même en lecture, car en cours de modification l'état est inconstistant). Il léve alors le drapeau, et tout autre acteur cherchant à accéder la ressource devra attendre qu'il soit revenu en position basse pour faire ce qu'il a faire, et patiente bien sagement dans la file d'attente.

    La modification d'une ressource partagée s'appelle section critique d'un programme. Elle est être la plus courte possible (effectuer tout les traitement de préparation avant vérouillage) et idéalement, ne modifier qu'une seule ressource à la fois. Elle est incluse entre le vérouillage et le déverouillage du mutex (MUTual EXclusion - sémaphore en français)
    En clair cela s'écrit (en pseudo-code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MUTEX_LOCK(ressource_mutex);
      // code la section critique
    MUTEX_UNLOCK(ressource_mutex);
    Pourquoi une seule ressource à la fois ? Pour éviter les INTER-BLOCAGE.
    L'exemple suivant doit être assez parlant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
           ACTEUR 1                            |             ACTEUR 2
    LOCK(A)                                    |    LOCK(B)
      // section critique 1_A                  |     // section critique 2_B
                                               |
      // ici attente de B                      |    // ici attente de A
    LOCK(B)                                    |    LOCK(A)
      // section critique 1_B                  |     // section critique 2_A
    UNLOCK(B)                                  |    UNLOCK(A)
                                               |
    UNLOCK(A)                                  |    UNLOCK(B)
    On peut voir que a l'interieur de sa section critique, qui verouille le mutex de la ressource A (disons qui verouille A) l'acteur 1 à besoin de B, et reciproquement pour l'acteur 2.
    Chaque acteur passera donc son premier LOCK avec succès, puis buttera sur le second, attendant chacun que l'autre le déverouille. Et par conséquent ne peut déverouiller la ressource initialement réservé. La situation, dite d'inter-blocage, n'a pas de solution, se perdurera indéfiniment...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2002
    Messages : 28
    Par défaut
    merci de ton aide skz81 ... je commence déjà à y voir plus clair ...
    Vraiment trop génial ce forum de développeur ...

+ 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. Pratique d'utilisation des mutexes
    Par FabaCoeur dans le forum C
    Réponses: 4
    Dernier message: 29/01/2009, 15h08
  5. Utilisation des mutex et des threads
    Par Chen norris dans le forum SDL
    Réponses: 4
    Dernier message: 31/08/2007, 00h00

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