This commit is contained in:
Rochas
2024-12-09 19:57:09 +01:00
parent 3ec65a8a29
commit 43de4fad01

View File

@@ -4,33 +4,33 @@ Tuan Minh VU
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 : le Buffet qui initialise dans
(poisson, viande, légume et nouille), le Cusinier, le stand de cuisson, son constructeur les 4 Compartiment (poisson, viande, légume et nouille), le
l'Employe_du_buffet. Puis il star en suite start l'employer du buffet. stand de cuisson, le Cusinier, 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
(2) Prendre une portion de chaque Compartiment du buffet, en vérifiant (2) Prendre une portion de chaque Compartiment du buffet, en vérifiant le
le verrou du compartiment est libre avant de lui-même le verrouiller, après verrou du compartiment est libre avant de lui-même le verrouiller, après
c'être servi il déverrouille fait un notifyAll sur le compartiment pour s'être servi il déverrouille fait un notifyAll sur le compartiment pour
réveiller les clients et l'employer du buffet qui pourrait attendre. réveiller les clients et l'employer du buffet qui pourrait attendre.
Et fais aussi un notify sur le buffet pour que l'employer du buffet puisse Et fais aussi un notify sur le buffet pour que l'employé du buffet
reafaire un tour des compartiment. puisse refaire un tour des compartiments.
(3) Cuire au stand, en se synchronisant avec le stand de cuisson. (3) Cuire au stand, en se synchronisant avec le stand de cuisson.
(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
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 compartiment à moins de 100g alors il vérifie qu'il est libre (se met en wait sinon) un compartiment à moins de 100g alors il vérifie qu'il est libre (se met en wait
et le remplit. Après avoir fait un tour il fait bufet.sleep, le buffet le reveillera desus sinon) et le remplit. Après avoir fait un tour il fait bufet.sleep, le
après qu'un client se soit servi. buffet le reveillera après qu'un client se soit servi.
Difficulté : Difficulté :
Nous n'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 On avait aussi commencé dans Stand_de_cuisson par faire une Queue, on a ensuite
décidé de simplement synchroniser le stand de cuisson et le client, qui est au final décidé de simplement synchroniser le stand de cuisson et le client, qui est au
beaucoup plus simple, mais le verrou n'est plus équitable, ce n'est plus le Client final beaucoup plus simple, mais le verrou n'est plus équitable, ce n'est plus le
qui attend depuis le plus long temps qui est prioritaire. Client qui attend depuis le plus long temps qui est prioritaire.