rapport pour sémaphore
This commit is contained in:
24
rapport.txt
24
rapport.txt
@@ -1,9 +1,9 @@
|
|||||||
Nous avons la Class Au_Wok qui contient le main(), on y initialise les clients
|
Nous avons la Class Au_Wok qui contient le main(), on y initialise les clients
|
||||||
ainsi que le restaurant, puis on start tous les clients.
|
ainsi que le restaurant, puis on start tous les clients.
|
||||||
|
|
||||||
Le constructeur Restaurant initialise le Buffet, un tableau de 4 Compartiment
|
Le constructeur Restaurant initialise le Buffet : un tableau de 4 Compartiment
|
||||||
(poisson, viande, légume et nouille), le stand de cuisson, l'Employe_du_buffet
|
(poisson, viande, légume et nouille), le Cusinier, le stand de cuisson,
|
||||||
et le Cuisinier. Il star en suite start ces deux derniers.
|
l'Employe_du_buffet. Puis il star en suite start l'employer du buffet.
|
||||||
|
|
||||||
Le run de Client va suivre ces étapes :
|
Le run de Client va suivre ces étapes :
|
||||||
(1) Entrer dans le restaurant en vérifiant bien que le restaurant est libre
|
(1) Entrer dans le restaurant en vérifiant bien que le restaurant est libre
|
||||||
@@ -11,22 +11,20 @@ Le run de Client va suivre ces étapes :
|
|||||||
le verrou du compartiment est libre avant de lui-même le verrouiller, après
|
le verrou du compartiment est libre avant de lui-même le verrouiller, après
|
||||||
c'être servi il déverrouille fait un notifyAll pour réveiller les clients
|
c'être servi il déverrouille fait un notifyAll pour réveiller les clients
|
||||||
ou l'employer du buffet qui pourrait attendre.
|
ou l'employer du buffet qui pourrait attendre.
|
||||||
(3) Cuire au stand, en se mettant dans la queue (il notifyAll le stand pour
|
(3) Cuire au stand, on utilise un sémaphore.
|
||||||
réveiller le cuisinier), quand son plat est cuit le cuisinier le sort de la
|
|
||||||
queue (le stand fait un notifyAll pour réveiller le client)
|
|
||||||
(4) Manger
|
(4) Manger
|
||||||
(5) Sort, en faisant un notifyAll sur le restaurant pour prévenir tout autre
|
(5) Sort, en faisant un notifyAll sur le restaurant pour prévenir tout autre
|
||||||
thread client attendant pour entrer
|
thread client attendant pour entrer
|
||||||
|
|
||||||
Le run du cuisinier, fait une boucle pour vérifier si un client est présent en
|
|
||||||
tête de la queue du stand de cuisson. Si oui, alors il fait cuire son plat.
|
|
||||||
Une fois fini, il sort le client le la queue et fait faire un notifyAll au stand
|
|
||||||
pour prévenir le client que son plat est fini.
|
|
||||||
|
|
||||||
L'employer du buffet fait le tour de chaque compartiment du buffet, s'il y a un
|
L'employer du buffet fait le tour de chaque compartiment du buffet, s'il y a un
|
||||||
un buffet à moins de 100g alors il vérifie qu'il est libre (se met en wait sinon)
|
un buffet à moins de 100g alors il vérifie qu'il est libre (se met en wait sinon)
|
||||||
et le remplit.
|
et le remplit.
|
||||||
|
|
||||||
|
|
||||||
Difficulté :
|
Difficulté :
|
||||||
Nous avons pas vraiment rencontré de difficulté, on a juste eu parfois quelque
|
Nous n'avons pas vraiment rencontré de difficulté, on a juste eu parfois quelque
|
||||||
oublie (notifyAll manquant par exemple)
|
oublie (notifyAll manquant par exemple).
|
||||||
|
On avait aussi commencé dans Stand_de_cuisson par faire une Queue, on a ensuite
|
||||||
|
remplacé par un sémaphore, qui est au final beaucoup plus simple, mais le verrou
|
||||||
|
n'est plus équitable, ce n'est plus le Client qui attend depuis le plus long temps
|
||||||
|
qui est prioritaire.
|
||||||
Reference in New Issue
Block a user