Definition
Ein Nebenläufigkeitsfehler, bei dem zwei oder mehr Aufgaben unendlich lange auf von den anderen gehaltene Ressourcen (oder auf Bedingungen, die nur von den anderen erfüllt werden können) warten und dadurch keiner von ihnen Fortschritt macht.
Prinzip
Prinzip
Deadlocks entstehen, wenn das System gleichzeitig die klassischen Bedingungen der Ressourcenvergabe erfüllt: gegenseitiger Ausschluss, Halten-und-Warten, keine Präemption und zirkuläres Warten; diese Bedingungen bilden die organisatorische Regel für eine bleibende zyklische Abhängigkeit.
Demonstration
Demonstration
Zwei Threads A und B: A hält Sperre L1 und fordert L2 an; B hält L2 und fordert L1 an. Keiner kann fortfahren, da jeder auf die Ressource des anderen wartet – es entsteht ein unendlicher Stillstand.
Fehlanwendung
Fehlanwendung
Jede lange Pause oder schlechte Reaktionszeit als Deadlock zu bezeichnen (z. B. hohe I/O‑Latenz, Scheduling‑Verzögerungen oder Livelock mit echtem zyklischen Deadlock zu verwechseln).
Konsequenz
Konsequenz
Die korrekte Erkennung von Deadlocks führt zu gezielten Gegenmaßnahmen: Unterbindung einer Coffman‑Bedingung (z. B. globale Ordnungsregel für Ressourcen), Erkennung von Zyklen und Wiederherstellung (Präemption oder Rollback) oder Entwurf von Vermeidungsalgorithmen; Fehlinterpretation führt zu wirkungslosen Maßnahmen.
Umkehrung
Umkehrung
Das Gegenteil ist ein System mit garantierter Fortschrittsfähigkeit (Liveness): keine zirkulären Wartezustände, Ressourcen sind präemptierbar oder werden in einer Ordnung vergeben, die Zyklen verhindert.
Abgrenzung
Abgrenzung
Gilt für nebenläufige Ressourcenzuteilungsprobleme (Threads, Prozesse, verteilte Locks, DB‑Transaktionen). Ausgeschlossen sind Einzelthread‑Logikfehler, reine Performance‑Verschlechterung ohne zyklische Abhängigkeit und vorübergehende Wartezustände, die sich auflösen. Verteilte Deadlocks und Lock‑Convoys fallen hinein; Speicherfehler allein nicht.
Semantische Spannung
Semantische Spannung
Spannung besteht zu Livelock und Starvation: Deadlock ist ein stabiler, blockierter Zustand (keine Zustandsänderungen), Livelock ist aktiv ohne Fortschritt, Starvation bezeichnet ungerechte Ressourcenverweigerung ohne zirkulären Zyklus.
Synthese
Synthese
Deadlock ist die stabile Erscheinungsform einer zyklischen Ressourcenabhängigkeit unter den vier Coffman‑Bedingungen; diese Sichtweise leitet Prävention (Bedingung brechen), Detektion (Zyklen finden) oder Wiederherstellung (präemptieren/rollback) ein.