Thibaut ROCHAS Tuan Minh VU Difficulté : 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) Explication code : 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. 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 Cuisinier, l'Employe_du_buffet. Puis il peut star l'employé du buffet et le Cuisinier. 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 que le sémaphore du compartiment est libre avant de lui-même le verrouiller, après s'être servi il libère le sémaphore. Et fais aussi un notify sur le buffet pour que l'employé du buffet puisse refaire un tour des compartiments. (3) Cuire au stand, il "fait la queue" en attendant que la palce se libère, il wait sur le stand de cuisson en attendant d'être notify. (4) Manger (5) Sort, en faisant un notifyAll sur le restaurant pour prévenir tout autre thread client attendant pour entrer 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 (sémaphore) 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. Le Cusinier attend qu'il y est un client, si non il dors en écoutant le stand de cuisson. Quand un client est là il fait cuir son plat puis notifyAll pour pévenir à la fois le cient qui faisait cuir son plat et tout les client en attente.