Soient les deux processus de mise à jour d'un compte bancaire et la variable globale compte initialisée à 10.
Nous faisons l'hypothèse qu'il est impossible que les deux processus accèdent au même instant (même cycle du processeur) à la même variable.
Processus A
var aux : integer begin aux := compte; aux := aux + 10; compte := aux; end. |
Processus B
var aux : integer begin aux := compte; aux := aux - 5; compte := aux; end. |
La figure 2.1 représente le graphe des comportements du ``programme'' constitué des deux processus. Chaque nud contient les valeurs des trois variables, et les arcs représentent les instructions.
Le résultat dépend de l'entrelacement des actions, donc de l'ordonnancement des processus. Il y a donc un besoin de contrôler le déroulement d'un processus.