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.
Philosophen
Hey,
Ich weiß nicht ob ich die Angabe richtig verstehe…
PhilosopherDeadlock:
Brauch ich hier überhaupt ein lock? Oder sollen die einfach essen?
Meine Vermutung:
firstFork → lock
secondFork → lock
System.out.println(“my text”);
firstFork → unlock
secondFork → unlock
Hier steht nichts weiter, dass ein andere Philosoph nicht auch die gleiche Gabel aufnehmen darf.
PhilosopherQuick:
Gleiche wie Deadlock?
Oder darf kein einziger Philosoph eine Gabel aufnehmen während einer isst?
PhilosopherOrdered:
zuerst secondFork dann firstFork?
Ich hoffe ihr könnt mir ein bisschen auf die Sprünge helfen. Konnte letzte Woche nicht an der Übung teilnehmen und die Angabe verstehe ich gar nicht.
Mit freundlichen Grüßen
Frezy
Da nutzt du ja ein Lock und das brauchst du auch. Bei der ersten Teilaufgabe soll ein Deadlock entstehen.
Zweimal die gleiche Aufgabe wäre ja langweilig ;). QuickPhilosopher bedeutet einfach, dass ein Philosoph sich seine beiden Gabeln schnappt, bevor irgendein anderer Philosoph irgendetwas machen kann. Es dürfen dann schon mehrere gleichzeitig essen. Aber das Gabeln Nehmen muss atomar passieren.
Das kommt darauf an, wie du deine Gabeln verteilt hast. Hier steht ja auf dem Blatt, welche Gabel von welchem Philosoph zuerst genommen werden soll. Schau dir mal die Fork-Klasse näher an.
Ist es richtig, dass der Philosoph 0 immer zwischen Gabel 0 und 1 sitzt… usw… bis der n-te Philosoph zwischen der n-ten Gabel und der 0ten Gabel sitzt?
Mit freundlichen Grüßen
Du kannst es sicherlich so implementieren. Aber du kannst es auch so implementieren, dass Philosoph 0 zwischen Gabel 3 und 4 sitzt. Ob das allerdings sinnvoll ist, ist eine andere Frage ;).