Livelock
Ein Livelock liegt vor, wenn Threads ständig als Reaktion aufeinander ihren Zustand ändern, ohne voranzukommen; sie sind nicht blockiert, können die Aufgabe aber nicht abschließen.
Zweck
Verständnis des Unterschieds zwischen Livelock und Deadlock sowie ihrer Abwehr; ein Fortschrittsdefekt (Liveness) in nebenläufigen Programmen.
Mechanismus
Threads treten einander ununterbrochen ab (z. B. geben beide die Sperre frei, damit der andere sie erhält), sodass kein Thread die Ressource erwirbt. Anders als beim Deadlock sind die Threads aktiv, kommen aber nicht voran. Abwehr: zufälliges Backoff, Prioritäten, Retry-Limits.
Anwendungsfälle
- Analyse der Nebenläufigkeits-Liveness
- Livelock-Erkennung
- Nebenläufiges Design