Le problème des voiesLe problème des voies regroupe les problèmes de synchronisation, de coopération et d'allocation de ressources.
moniteur VOIES nbAB,nbBA,nbBC,nbBC,nbDC, nbCD entier init 0 condition FdepartA, FdepartD, FsortirAB, FsortirDC, FentrerCD, FentrerBA init vide
Invariant : nbAB >= 0 et nbBA >= 0 nbCD >= 0 et nbDC >= 0 0 <= nbBC <= 1 0 <= nbCB <= 1 et nbAB * nbBA = 0 nbCD * nbDC = 0 et nbAB + nbBC <= 1 ou nbDC + nbCB <=1. |
 |
procedure departA = si (nbBA <> 0) ou (nbDC + nbCD >1 et nbAB + nbBC >0) alors FdepartA.WAIT nbAB++ |
procedure rentrerBC = si nbBC = 1 alors fsortirAB.WAIT nbBC = 1 nbAB -- si nbAB = 0 alors FrentrerBA.SIGNAL | |