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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    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 confirmé
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    Par défaut
    aide moi svp

  3. #3
    Membre extrêmement actif
    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
    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 .

  4. #4
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    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 ?

  5. #5
    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 : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    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.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2008
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 72
    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

  7. #7
    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 : 44
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    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.

+ 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