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.