Mutual Exclusion : sémaphore d'exclusion mutuelle (de fils d'exécution).
Garantir qu'une section critique d'instructions (modifiant typiquement une structure de données partagée) n'est exécutée que par 1 fils d'exécution à la fois.
Un mutex est un sémaphore qui n'autorise que 1 seul fils d'exécution simultané.
Le langage Java, l'exclusion mutuelle est rendue possible via des blocs synchronisés sur le monitor d'un objet.
Le solde d'un compte bancaire ne doit pas pouvoir être consulté au milieu d'un virement.
class CompteBancaire {
private float solde;
public synchronized void debit(float montant) {
solde -= montant;
}
public synchronized void credit(float montant) {
solde += montant;
}
public synchronized void virement(CompteBancaire beneficiaire, float montant) {
debit(montant);
beneficiaire.credit(montant);
}
public synchronized float getSolde() {
return solde;
}
}