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

Java Discussion :

moniteur lécteur / rédacteur


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    Points : 43
    Points
    43
    Par défaut moniteur lécteur / rédacteur
    dans cette probléme
    on suppose que la priorité est donné aux rédacteurs qui attendent . Ainsi dès
    qu ' un rédacteur est disponible , tous les nouveaux lecteurs sont bloqués jusqu a ce que tous les rédacteurs auront terminés . bien sur , dans d'extremes situations cela va mener à une famine des lecteurs

    on utilise un moniteur requie 4 méthodes startRead,stopRead,startWrite et stopWrite , les Deux premiéres implémentent respectivement les sections d entrée et de sortie .les deux autres implémentent celles des rédacteurs.ainsi les lecteurs sont structurés comme suit :

    startRead(); // entry protocol
    //Call object to read data structure
    stopRead(); // exit protocol

    de maniére similaire ,les rédacteurs :
    startWrite();
    //........
    stopWrite();
    le travail demandé est de compléter le code du moniteur ReadersWriters
    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
    36
    public class ReadersWriters
    {
    public ......... void startWrite()
    {
    /* wait until it is ok to write */
    while(.......... || ..........)
    {
    ............;
    wait();
    ............;
    }
    writing=........;
    }
    public ......... void stopWrite()
    {
    ...........
    notifyAll();
    }
    public ........ void startRead()
    {
    /*wait until it is ok to read */
    while (.......... || ........... > 0)
    wait();
    ............;
    }
    public ......... void stopRead()
    {
    ........;
    if(..........)
    notifyAll();
    }
     
    private int readers = 0 ;
    private int waitingWriting = .........;
    private boolean writing = false ;
    }
    j essai de compléter le code
    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
    36
    public class ReadersWriters
    {
    	public synchronized  void startWrite() 
    	{
    		/* wait until it is ok to write */
    		while(writing || waitingWriters > 0)
    		{
    			waitingWriters++;
    			wait();
    			waitingWriters--;
    		}
    		writing=true;
    	}
    	public synchronized  void stopWrite()
    	{
    		writing=false;
    		notifyAll();	
    	}
    	public  synchronized void  startRead()
    	{
    		/*wait until it is ok to read */
    		while (writing || waitingWriters > 0)
    			wait();
    			readers++;
    	}
    	public  synchronized void stopRead()
    	{
    		readers--;
    		if(readers = 0)
    			notifyAll();
    	}
     
    private  int readers = 0 ;
    private  int waitingWriting = 0 ;
    private boolean  writing = false ;
    }
    je suis nouveau
    est qu il ya des erreurs
    et pourquoi la classe ReadersWriters n hérite pas de la classe Thread ?

  2. #2
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    aide moi svp

  3. #3
    Membre chevronné
    Profil pro
    Développeur Java Indépendant
    Inscrit en
    Mai 2007
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java Indépendant

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 333
    Points : 2 061
    Points
    2 061
    Par défaut
    Peut tu expliquer ton problème d'un points de vue plus général s'il te plait ?

    Parce que la tu rentre directement dans le vif du sujet mais nous on est pas au courant du contexte, et c'est peut-être moi mais j'ai rien compris .
    Yoshi

    PS : tous les propos tenus dans le message ci-dessus sont à préfixer avec "A mon humble avis", "Je pense que". Il serait inutilement fastidieux de le rappeler à chaque phrase.

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Qu'est-ce qui ne fonctionne pas ? Quelles sont les erreurs ?

    EDIT : trop lent....
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    Citation Envoyé par zag-yoshi Voir le message
    Peut tu expliquer ton problème d'un points de vue plus général s'il te plait ?

    Parce que la tu rentre directement dans le vif du sujet mais nous on est pas au courant du contexte, et c'est peut-être moi mais j'ai rien compris .
    tu connais qu' un des problémes de synchronisation de processus est le probléme de lécteur/rédacteur
    considérons plusieurs lecteurs et plusieurs rédacteurs qui veulent accéder à un objet contenant des données partagées . les lecteurs peuvent lire de manière concurrente puisqu 'ils ne modifient pas les données , cepandant , il est nécessaire d'imposer un mécanisme d'exlusion mutuelle entre les rédacteurs pour accéder aux données .
    on suppose que la priorité est donné aux rédacteurs qui attendent . Ainsi dès
    qu ' un rédacteur est disponible , tous les nouveaux lecteurs sont bloqués jusqu a ce que tous les rédacteurs auront terminés . bien sur , dans d'extremes situations cela va mener à une famine des lecteurs

    la solution de ce probléme utilisant les moniteurs requient 4 méthodes startRead,stopRead,startWrite et stopWrite , les Deux premiéres implémentent respectivement les sections d entrée et de sortie .les deux autres implémentent celles des rédacteurs.ainsi les lecteurs sont structurés comme suit :

    startRead(); // entry protocol
    //Call object to read data structure
    stopRead(); // exit protocol

    de maniére similaire ,les rédacteurs :
    startWrite();
    //........
    stopWrite();
    le travail demandé est de compléter le code du moniteur ReadersWriters
    j'ai fait un essai et je demande de corriger mes erreurs avec petite explication
    c est clair comme ça ?

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Tu codes "sur papier" ? Sans compiler ? C'est un genre de devoir à la maison ? Ou alors tu dois livrer une appli à ton prof ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    Points : 43
    Points
    43
    Par défaut
    mon probléme est résolu
    j ai un question je connais quand on veut faire synchronisation des processus en java
    les classes héritent de la classe thread
    pourquoi cette classe n hérite pas de le classe thread

  8. #8
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Parce que cette classe est prévue pour être utilisée par un Thread.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

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

Discussions similaires

  1. [API] Codage d'un moniteur de messages debug
    Par Pierre Castelain dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 15/01/2004, 19h47

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