Philosoph Waiter

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Philosoph Waiter
Hi,

ich habe mal eine Frage zum Waiter. Was meint ihr wie wir den implementieren sollen? Soll er wirklich nur schiedsrichten? Mir fallen jetzt spontan mehrere Szenarien ein, mit und ohne fork.lock()'s.

Ich hätte das jetzt so gemacht, dass man z.B. ein waiter.acquire(fork1, fork2) aufruft und der waiter die Resourcen verwaltet. Dann wären die fork.locks obsolet…

Was meint ihr?

Grüße


Ich habe die Waiter-Klasse mit acquire und release programmiert und mich dabei an den folien orientiert. Also wenn dann ruft der Waiter die beiden forks() auf oder halt nicht.


Alles klar, so hab ich das auch! Aber hast du von dem ReentrantLock Gebrauch gemacht bei deinem Waiter? Ich hab das (wie in den Folien) den Waiter verwalten lassen.


nein der waiter prüft in der synchronisierten acquire methode lediglich ob beide Forks nicht gelockt sind und locked sie in diesem Fall und gibt true zurück, ansonsten false. Und der Philosoph pollt entsprechend mit einer while Schleife auf den Waiter bis er ihm die Gabeln zuteilt