parallelism:deadlocks:philosophenloesung:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
parallelism:deadlocks:philosophenloesung:start [2025/04/08 10:54] – angelegt Martin Pabst | parallelism:deadlocks:philosophenloesung:start [2025/04/08 10:59] (aktuell) – [Lösung zu Teilaufgabe a)] Martin Pabst | ||
---|---|---|---|
Zeile 12: | Zeile 12: | ||
</ | </ | ||
+ | ===== Lösung zu Teilaufgabe a) ===== | ||
+ | - **mutual exclusion (gegenseitiger Ausschluss)** ist in diesem Fall erfüllt, weil eine Gabel zu einem gegebenen Zeitpunkt jeweils nur von einem Philosophen gehalten werden kann. | ||
+ | - **hold and wait (Halten und Warten)**: ist | ||
+ | - **non preemption (Ununterbrechbarkeit)**: | ||
+ | - **cyclic waiting (zyklisches Warten)**: Im resource allocation graph gibt es mindestens einen Zyklus. | ||
+ | |||
+ | ===== Lösung zu Teilaufgabe c) ===== | ||
< | < | ||
Zeile 54: | Zeile 61: | ||
| | ||
while (true) { | while (true) { | ||
- | | + | if(forkLeft.getNumber() < forkRight.getNumber()) { |
- | | + | |
- | | + | sleep(10); |
+ | forkRight.take(color); | ||
+ | } else { | ||
+ | | ||
+ | sleep(10); | ||
+ | forkLeft.take(color); | ||
+ | } | ||
| | ||
Zeile 76: | Zeile 89: | ||
| | ||
int color = gray; | int color = gray; | ||
+ | | ||
| | ||
super(500, 300, 580, 300); | super(500, 300, 580, 300); | ||
+ | this.number = number; | ||
setBorderColor(color); | setBorderColor(color); | ||
rotate(360 / 10.0 + 360 / 5.0 * number, 400, 300); | rotate(360 / 10.0 + 360 / 5.0 * number, 400, 300); | ||
Zeile 97: | Zeile 112: | ||
} | } | ||
+ | | ||
+ | return number; | ||
+ | } | ||
} | } | ||
</ | </ |
parallelism/deadlocks/philosophenloesung/start.1744109662.txt.gz · Zuletzt geändert: 2025/04/08 10:54 von Martin Pabst