Mutex

Mutual Exclusion : sémaphore d'exclusion mutuelle (de fils d'exécution).

Besoin

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.

Analyse

Un mutex est un sémaphore qui n'autorise que 1 seul fils d'exécution simultané.

Implémentation

Le langage Java, l'exclusion mutuelle est rendue possible via des blocs synchronisés sur le monitor d'un objet.

Exemples

Le solde d'un compte bancaire ne doit pas pouvoir être consulté au milieu d'un virement.

class CompteBancaire {

   private float solde;<br> <br>      public <strong>synchronized</strong> void <strong></strong>debit(float montant) {<br>          solde -= montant; <br>      }<br> <br>      public <strong>synchronized</strong> void <strong></strong>credit(float montant) {<br>          solde += montant; <br>      }<br> <br>      public <strong>synchronized</strong> void <strong></strong>virement(CompteBancaire beneficiaire, float montant) { <br>         debit(montant);<br>         beneficiaire.credit(montant); <br>      }<br> <br>      public <strong>synchronized</strong> float getSolde() {<br>         return solde; <br>      }<br>   }

s1"HotSpot - Threading", JavaSoft