Soient deux processus A et B tournant simultanément, représentant deux comptes en banque. Pour assurer la transaction, on doit verrouiller à chaque fois un compte avant d'effectuer une entrée ou une sortie d'argent, puis on le déverrouille. On peut alors obtenir quelque chose du genre
transférer(De, Vers, Combien)
verrouiller De
verrouiller Vers
prélever Combien à De
verser Combien à Vers
déverrouiller DE
déverrouiller Vers
Or si tu exécutes simultanément transférer(A, B, une somme) et transférer(B, A, une autre somme), qui est-ce qui tombe à l'eau ?