Définition
Une situation de concurrence où les tâches changent continuellement d'état en réaction aux autres mais n'accomplissent pas de progrès global ; le système reste actif mais aucun travail utile n'est terminé.

Principe

Principe
Le livelock survient lorsque les participants réagissent à la contention de façon coopérative ou antagoniste de manière à préserver la capacité de changer d'état des composants (vivacité locale) mais sans garantir le progrès au niveau système — souvent à cause de stratégies symétriques de retrait/retentative ou de règles de réactivité excessives.

Démonstration

Démonstration
Deux processus détectent la contention et reculent tous deux pendant exactement le même intervalle, puis retentent simultanément, empêchant à chaque fois l'achèvement de l'opération malgré des changements d'état permanents.

Mauvaise application

Mauvaise application
Qualifier d'« livelock » toute utilisation élevée du CPU ou tout 'thrashing', ou traiter le livelock comme un interblocage et appliquer des mécanismes de récupération qui supposent l'absence de changements d'état.

Conséquence

Conséquence
Identifier correctement un livelock mène à des atténuations comme l'introduction d'un retrait aléatoire, la rupture de la symétrie, l'ajout d'équité ou l'application de garanties de progrès, ou la limitation des comportements réactifs ; une mauvaise identification conduit à des récupérations trop brutales qui peuvent détériorer la réactivité.

Inversion

Inversion
L'inverse est un progrès coordonné : bien que les acteurs changent d'état, leurs interactions convergent vers l'achèvement des opérations plutôt que vers des réponses cycliques sans progrès.

Limite

Limite
S'applique quand des composants du système continuent d'exécuter des changements d'état sans atteindre leurs objectifs. Exclut l'interblocage (absence de changement d'état) et la simple variabilité de performance ; peut se produire dans le routage réseau, les boucles de réessai ou les protocoles coopératifs.

Tension sémantique

Tension sémantique
Tension avec le 'thrashing' et l'attente active : le thrashing désigne le gaspillage de ressources par des changements de contexte ou du paging excessifs, tandis que le livelock met l'accent sur la non‑complétion fonctionnelle malgré l'activité ; les deux peuvent coexister.

Synthèse

Synthèse
Le livelock est une condition d'activité sans progression provoquée par des règles réactives ou la symétrie qui entraînent des changements d'état répétés sans achèvement ; le résoudre exige de briser la symétrie, d'introduire de l'aléa ou d'imposer des garanties de progrès.