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 :
publicclass 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();
}
privateint readers = 0 ;
privateint waitingWriting = .........;
private boolean writing = false ;
}
j essai de compléter le code
Code :
publicclass 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();
}
privateint readers = 0 ;
privateint 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 ?
Marsh Posté le 18-02-2008 à 11:27:01
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
j essai de compléter le code
je suis nouveau
est qu il ya des erreurs
et pourquoi la classe ReadersWriters n hérite pas de la classe Thread ?