PPT-Folie
Die nächste Lösungsidee verwendet Sperrsynchronisation zwischen allen Philosophen, z.B. über ein binäres Semaphor mutex :
- Wenn Philosoph hungrig wird, ruft er mutex.P() auf.
- Hat er die Sperre, führt er den gesamten Zyklus "Gabeln aufnehmen - essen - Gabeln ablegen" unter Ausschluß aller anderen Philosophen aus.
Dies ist eine korrekte Lösung; Fairness kann durch faire Vergabe der Sperre an die Wartenden erreicht werden.
Die Lösung schränkt aber die Parallelität ein, da immer nur ein Philosoph ißt, während bei fünf Gabeln zwei parallel essen könnten.