20 octobre 2026 · 1 min de lecture
Deadlock : quand les verrous bloquent tout
Le verrou qui règle la race condition a un prix : deux virements croisés peuvent s'attendre pour toujours. Le deadlock, expliqué avec Alice et Bob.
- tech
- bases
« Avec des verrous partout, on est tranquilles, non ? » Justement, non : les verrous peuvent tout bloquer.
L'exemple : deux virements croisés
Alice vire de l'argent à Bob, et Bob à Alice, en même temps. Chaque virement verrouille d'abord un compte, puis demande l'autre :
- Alice verrouille le compte A.
- Bob verrouille le compte B.
- Puis chacun demande le compte de l'autre.
Personne ne lâche : Alice tient A et attend B, Bob tient B et attend A. Les deux attendent, pour toujours. C'est un deadlock (un interblocage). Ce qui le crée, ce n'est pas un croisement : c'est un cycle, où chacun tient une ressource tout en demandant celle de l'autre.
La solution : le même ordre pour tous
Tout le monde verrouille dans le même ordre : le compte A, puis le B. Alice prend A. Bob, qui veut aussi A, attend les mains vides. Alice prend B, finit, relâche A et B. Puis Bob passe.
À retenir
Même ordre pour tous : plus de cycle, donc plus de deadlock. Bob peut encore attendre un moment, mais plus jamais pour toujours.
Bon à savoir : les bases de données comme PostgreSQL détectent ce genre de cycle et annulent l'une des transactions, qu'il faut alors rejouer.