Speisende Philosophen
Einzelne Gabelerwerbe durchspielen und Besitz, Wartezustände und abgeschlossene Mahlzeiten untersuchen.
Über dieses Tool
Fünf Philosophen teilen fünf Gabeln. Schritt führt genau eine Aktion aus; Start läuft automatisch mit 0,25–4 Aktionen/s. Beide erzeugen beim ersten Aufruf den Anfangszustand. Reset behält die Auswahlfolge bei. Beispiel lädt den Anfangszustand, einen Wartenden oder zwei nicht benachbarte Essende. Die letzten beiden Beispiele wählen Manuell und P1, damit der nächste Schritt eine Ressource erwerben oder freigeben kann.
P1 braucht F0/F1, P2 F1/F2, P3 F2/F3, P4 F3/F4, P5 F4/F0. Jeder nimmt die kleinere Nummer zuerst, bei P5 also F0 vor F4. Eine Aktion macht einen Denkenden hungrig, versucht die erste Gabel, versucht die zweite und beginnt zu essen oder gibt beide Gabeln frei und beendet eine Mahlzeit. Auch ein erfolgloser Versuch zählt als Aktion. Die Tabelle zeigt gehaltene und gewünschte Gabeln, Blockierer und Mahlzeiten; Linien zeigen den Besitz.
Rundlauf wählt nach jeder Aktion den folgenden Philosophen. Manuell erlaubt beliebige Auswahl. Im Wartebeispiel hält P1 F0, während P5 wartet: Ein P1-Schritt nimmt F1, der nächste gibt beide Gabeln frei. Danach kann P5 F0 nehmen. Die Ressourcenhierarchie verhindert zyklisches Warten, garantiert aber keine Fairness: Wiederholte Auswahl eines Wartenden bringt den Besitzer nicht zur Freigabe. Dies ist ein deterministisches Lehrmodell, keine echten Threads oder Simulation physischer Zeit.
Änderungen an Auswahlfolge, Philosoph oder Tempo pausieren und behalten den Zustand. Pause, Verbergen und Verlassen stoppen den einzigen Timer; verstrichene Zeit wird nicht nachgeholt. Rückkehr, Neuladen und Sprachwechsel stellen den exakten pausierten Zustand einschließlich nächstem Philosophen, Mahlzeiten und roher Tempoeingabe wieder her. Keine externe Berechnung. Hintergrund: Dijkstra und Scholten, Distributed Arbitration (EWD752). Dessen stärkere Arbitration-Annahmen liefern keine Fairnessgarantie für diesen frei wählbaren Scheduler.
Gabelbesitzer stehen im aufklappbaren Abschnitt unter der Zustandstabelle. Ungültige Zustände werden abgewiesen, die laufende Sitzung bleibt erhalten. Frühere reine Einstellungslinks bleiben lesbar und starten ohne Simulation. Automatischer Ablauf wird nie wiederhergestellt. Der Aktionszähler stoppt bei der größten sicheren JavaScript-Ganzzahl; Standard startet wieder bei null. Lokaler Browserspeicher und optionale JSON-Dateien bleiben auf deinem Gerät.
Nur Eingabewerte bleiben in diesem Browser erhalten. Berechnete Ergebnisse und Versuchsverläufe werden nicht gespeichert.