Aller au contenu
uencoder

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

Outils associés

References