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 :

cas d'école - exclusion mutuelle


Sujet :

C

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut cas d'école - exclusion mutuelle
    Salut à tous.
    Je me posais une question en rapport avec l'utilisation des sémaphores. Je l'ai appris dans le passé mais je n'ai jamais pu me rappeller la solution
    J'ai plusieurs processus qui vont accéder à une même ressource. Le plus facile serait de la protéger avec un sémaphore. Néanmoins, pour des questions d'optimisation l'énoncé est un peu plus complexe. J'ai deux types de processus, certains lisent (readers) et d'autres écrivent (writers). Tant qu'il n'y a que des readers, ils peuvent accéder à la ressource à 20 simultanément si nécessaire. Mais si un writer décide d'utiliser la ressource, tout le monde se retrouve bloqué (donc il n'y a plus ni readers ni d'autres writers qui peuvent y toucher).
    Le code ressemble donc à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    read() {
    verouiller_pour_la_lecture();
    lire_un_truc();
    deverouiller_pour_la_lecture();
    }
     
    write() {
    verouiller_pour_l_ecriture();
    ecrire_un_truc();
    deverouiller_pour_l_ecriture();
    }
    Il me faudrait donc un petite explication sur l'implémentation des 4 méthodes de verouillage/déverouillage, les sémaphores à utiliser, les éventuelles variables à mettre en place, ect... Pas besoin d'utiliser le code d'une api quelconque, les sémaphores tout le monde connait alors un pseudo code quelconque suffira
    Merci d'avance à ceux qui me répondront.

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par zais_ethael
    Salut à tous.
    Je me posais une question en rapport avec l'utilisation des sémaphores. Je l'ai appris dans le passé mais je n'ai jamais pu me rappeller la solution
    <...>
    Rapport avec le langage C ?

    MODO : Merci de déplacer sur Algorithmes

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Le rapport est que dans 99% des cas on enseigne la synchronization en C, que je n'ai jamais vu ce sujet sur le forum algo mais que je ne compte plus les fois sur celui-ci.
    Ben ouais, excuse moi si j'essaie de maximiser mes chances de trouver une réponse , c'est pas ma faute si il n'y a pas de forum consacré au sujet.
    Si tu ne me crois pas essaie de rechercher "thread" sur le forum algo puis sur celui ci et tu verras qu'il y a pas photo.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    C'est effectivement un des problèmes classiques que l'on recontre lors de l'étude de la gestion de processus en C (Posix)... Malheureusement, je ne sais pas on peut trouver la réponse.. mais google peut aider.

    EDIT : Je vais peut etre devoir le refaire prochainement, dans ce cas la, et si j'arrive à quelque chose de propre, je posterais.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    L'ennui c'est que je ne crois pas qu'il y ait un nom précis à ce problème, même si on l'enseigne un peu partout.
    Sinon ça pourrait toujours m'interresser aussi.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Points : 626
    Points
    626
    Par défaut
    http://www.cours.polymtl.ca/inf3600/...NotesCours.htm
    Le problème est abordé rapidement, dans le chaptire 6, page 24 (6.8.2 Problème des rédacteurs et lecteurs ).

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

Discussions similaires

  1. Exclusion mutuelle & Conditions Pthreads
    Par DJ@M's dans le forum C
    Réponses: 3
    Dernier message: 14/01/2006, 18h07
  2. Exclusion mutuelle
    Par Jahjouh dans le forum C++
    Réponses: 4
    Dernier message: 28/11/2005, 21h18
  3. Utiliser un héritage avec exclusion mutuelle correctement
    Par akecoocoo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 20/11/2005, 22h54
  4. Exclusion mutuelle
    Par Jahjouh dans le forum C++
    Réponses: 15
    Dernier message: 24/09/2005, 12h32
  5. [Thread][Synchronisation] Exclusion mutuelle
    Par masto dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 20/01/2005, 16h02

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