Livelock
Un livelock se produit lorsque des threads changent constamment d'état en réponse l'un à l'autre sans progresser ; ils ne sont pas bloqués mais ne peuvent pas achever leur tâche.
Objectif
Comprendre la différence entre livelock et deadlock et leurs défenses ; un défaut de vivacité dans les programmes concurrents.
Mécanisme
Les threads se cèdent mutuellement la place sans relâche (p. ex. les deux libèrent le verrou pour que l'autre le prenne), si bien qu'aucun thread n'acquiert la ressource. Contrairement au deadlock, les threads sont actifs mais sans progrès. Défenses : temporisation aléatoire, priorités, limites de tentatives.
Cas d’usage
- Analyse de vivacité concurrente
- Détection de livelock
- Conception concurrente