Moniteurs, Java, Threads et Processus - Montefiore
Moniteurs, Java, Threads et Processus - Montefiore
Moniteurs, Java, Threads et Processus - Montefiore
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
public synchronized void semSignal()<br />
{ value++;<br />
if (nbWait > 0)<br />
{ nbWait--; notify();<br />
}<br />
}<br />
}<br />
public synchronized int semNbWait()<br />
{ r<strong>et</strong>urn nbWait;<br />
}<br />
L’opération nbWait-- se fait dans semSignal() juste avant le notify() car,<br />
étant donné l’absence de reprise immédiate, effectuer c<strong>et</strong>te opération dans<br />
semWait() après le wait() pourrait mener au renvoi d’une valeur incorrecte<br />
par semNbWait().<br />
La sémantique de wait() <strong>et</strong> notify() implique que c<strong>et</strong>te implémentation<br />
n’est pas équitable.<br />
32