Attention, votre navigateur ne supporte pas le javascript ou celui-ci a été désactivé. Certaines fonctionnalités dynamiques de ce module sont restreintes.
Regardez l'extrait vidéo et complétez le texte suivant.
Le deuxième c'est la création d'incohérence. Il vous faut fixer, à un moment donné quand vous écrivez votre programme, une sorte de contrainte d'intégrité, un point fixe qui doit toujours être vrai. J'ai une transaction qui lit A, qui fait + 1, qui lit B, qui fait + 1. Elle fait la même opération sur A et sur B. Celle-ci, elle lit A, elle fait x 2, elle lit B, elle fait x 2. Si A=B au départ, que vous fassiez T1 et T2 ou que vous fassiez T2 et T1, A=B à la fin. Ce n'est pas la même personne qui a écrit ces deux programmes-là. Mes deux programmeurs, qui ne se connaissent pas, ont écrit tous les deux un programme qui est parfaitement bon, qui vérifie la contrainte A = B au départ, A = B à la fin, je suis même d'ailleurs persuadé que si je fais T1 puis T2, ou T2 puis T1, cette contrainte sera toujours vérifiée. Maintenant je les fais tourner en parallèle. A un moment donné, le système met les deux programmes en même temps. J'obtiens une exécution concurrente. Si A = B au départ, je lis 50, j'ajoute en mémoire 1, j'écris sur le disque 51. Je lis 51 x 2, 102, j'écris sur le disque 102. Je lis B, 50 x 2, 100, j'écris 100. Je lis 100, plus 1, 101, j'écris 101. A = 101, B = 102, terminé.