Bei multithreaded (parallel ausführenden) oder asynchronen Programmen besteht die Gefahr, dass ein System in einen blockierten Zustand gerät. Ein Deadlock beschreibt einen solchen Zustand, in dem mehrere Prozesse auf Ressourcen warten, die von anderen Prozessen gehalten werden. Dabei entsteht ein Zyklus gegenseitiger Abhängigkeiten, in dem keiner der beteiligten Prozesse fortschreiten kann, da jeder auf die Freigabe von Ressourcen durch andere Prozesse angewiesen ist.
z.B.

Vermenschlicht könnte es folgendermassen aussehen:

Welche Vermeidungsmöglichkeiten stehen zur Verfügung
- Definiere eine feste Reihenfolge, in der Ressourcen angefordert werden, um zyklische Abhängigkeiten zu vermeiden.
- Verwende Zeitlimits für Ressourcenzugriffe, um blockierende Prozesse automatisch zu beenden.
- Reduziere die Notwendigkeit von Locking durch die Nutzung von lock-freien Datenstrukturen.
- Minimiere die Ressourcennutzung und vermeide das gleichzeitige Anfordern mehrerer Ressourcen durch denselben Prozess.
- Implementiere Mechanismen, um auf Deadlock-Situationen zu reagieren, z. B. das Beenden eines betroffenen Prozesses.