sémaphore sur les compatiments

This commit is contained in:
Rochas
2024-12-09 22:15:57 +01:00
parent 06bf38a576
commit c5e73329b6
7 changed files with 115 additions and 55 deletions

View File

@@ -7,14 +7,13 @@ ainsi que le restaurant, puis on start tous les clients.
Le constructeur Restaurant initialise le Buffet : le Buffet qui initialise dans
son constructeur les 4 Compartiment (poisson, viande, légume et nouille), le
stand de cuisson, le Cusinier, l'Employe_du_buffet. Puis il star en suite start
l'employer du buffet.
l'employé du buffet.
Le run de Client va suivre ces étapes :
(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 le
verrou du compartiment est libre avant de lui-même le verrouiller, après
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.
sémaphore du compartiment est libre avant de lui-même le verrouiller,
après s'être servi il déverrouille.
Et fais aussi un notify sur le buffet pour que l'employé du buffet
puisse refaire un tour des compartiments.
(3) Cuire au stand, en se synchronisant avec le stand de cuisson.
@@ -22,15 +21,16 @@ Le run de Client va suivre ces étapes :
(5) Sort, en faisant un notifyAll sur le restaurant pour prévenir tout autre
thread client attendant pour entrer
L'employer du buffet fait le tour de chaque Compartiment du Buffet, s'il y a un
L'employé 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
desus sinon) et le remplit. Après avoir fait un tour il fait sleep sur le buffet,
le buffet le réveillera à chaque fois qu'un client se soit servi.
Difficulté :
Nous n'avons pas vraiment rencontré de difficulté, on a juste eu parfois quelque
oublie (notifyAll manquant par exemple).
On avait aussi commencé dans Stand_de_cuisson par faire une Queue, on a ensuite
On avait 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 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.
Pour les compartiments, nous n'avons pas commencé par faire avec un sémaphore mais
nous nous sommes rendus compte que ça pouvait entraîner des problèmes de
synchronisation (par exemple en forçant les client a vider les compartiment)