Interblocage

Définition, exemples et bonnes pratiques

À retenir

  • C'est un cercle vicieux d'attente réciproque entre plusieurs tâches.
  • Il rend le système ou l'application totalement inactif (gel).
  • Sa résolution nécessite souvent l'arrêt forcé d'un des processus impliqués.

L'interblocage est une situation de paralysie totale où deux ou plusieurs programmes (ou processus) restent figés car ils s'attendent mutuellement. Imaginez deux personnes face à face dans un couloir très étroit : l'une attend que l'autre se pousse pour passer, et l'autre fait exactement la même chose ; sans intervention extérieure, aucune ne pourra jamais avancer.

Étymologie

Le mot est formé du préfixe inter- (indiquant la réciprocité) et de blocage. C'est l'équivalent français du terme technique anglais deadlock. On utilise parfois le terme plus dramatique d'« étreinte fatale » pour souligner le caractère définitif de l'arrêt si aucune action manuelle n'est entreprise.

Exemples d'usage

  • Le programme A verrouille l'imprimante et attend que le programme B libère le scanner. Simultanément, le programme B verrouille le scanner et attend que le programme A libère l'imprimante.
  • Deux voitures arrivent en même temps à une intersection où chacun doit céder le passage à sa droite : tout le monde s'arrête et personne ne démarre.

Cas d'usage

Ce concept intervient principalement dans le développement de logiciels multi-tâches, la gestion des bases de données (quand plusieurs utilisateurs modifient les mêmes données) et la conception des systèmes d'exploitation qui doivent partager le matériel entre plusieurs applications.

Bonnes pratiques

Pour prévenir ce problème, les développeurs utilisent souvent une règle simple : toujours demander l'accès aux ressources dans le même ordre (par exemple, toujours verrouiller le fichier A, puis le fichier B, jamais l'inverse). L'utilisation de délais d'attente (timeouts) permet aussi d'abandonner une tâche avant qu'elle ne reste bloquée pour l'éternité.

Synonymes

deadlock étreinte fatale impasse verrou mortel

Antonymes

fluidité exécution parallèle synchronisation

Conseil

Si vous créez un script qui manipule plusieurs fichiers ou bases de données en même temps, essayez de limiter au maximum le temps de verrouillage des ressources. Plus un programme garde une ressource pour lui, plus le risque d'interblocage avec un autre programme augmente.

Questions fréquentes

Quelle est la différence entre deadlock et livelock ?

Dans un deadlock (interblocage), les programmes ne font plus rien. Dans un livelock, ils bougent ou changent d'état en permanence mais n'avancent pas dans leur travail, comme deux personnes qui dansent d'un côté à l'autre pour s'éviter sans y parvenir.

Un ordinateur peut-il détecter seul un interblocage ?

Oui, certains systèmes d'exploitation et gestionnaires de bases de données surveillent les cycles d'attente et peuvent décider de 'tuer' une tâche pour débloquer les autres.