D’après MSDN le constructeur Mutex(boolean), je cite : « Mutex(Boolean) : Initialise une nouvelle instance de la classe Mutex avec une valeur Boolean qui indique si le thread appelant doit avoir la propriété initiale du mutex. »
Bon, quand on sait de quoi on parle, cette définition du constructeur est simple.
Sinon on risque de ne pas savoir ce qu’est la propriété initiale du mutex…


Cadenassez votre code grâce aux mutex.

Cadenassez votre code grâce aux mutex.

Pas de panique, en fait bien que la définition soit au premier à bord obscure, la notion cachée derrière elle est beaucoup plus simple.

Explication de Mutex(boolean)

Lorsque vous allez créer une nouvelle instance de votre Mutex via le constructeur Mutex(boolean), vous allez pouvoir dire si le thread qui vient de créer votre Mutex en est le propriétaire ou non.

En fait, lorsque vous créez votre Mutex, celui-ci peut être utilisé par n’importe quel processus.
Le thread réservant le mutex sera donc le propriétaire de ce mutex (il en aura donc la propriété, les autres ne pourront qu’attendre leur tour.).
Du coup, un thread B peut très bien avoir « capturé » le mutex juste après sa création par le thread A.
Si vous ne voulez pas que cela se produise, il vous suffit d’indiquer au constructeur que le mutex est réservé par le thread A (c’est à dire par le thread qui vient de créer le mutex) grâce au booléen à true du constructeur.
Le thread A sera alors le propriétaire initial du mutex.
Inversement, si vous préférez laisser le système choisir qui doit obtenir le verrou sur le mutex alors il suffit de passer false au constructeur de votre mutex.

Pour information, le constructeur Mutex(), en fait, initialise par défaut à False la valeur de propriété initiale du mutex.
Utiliser Mutex() revient à faire Mutex(False).

Exemple d’utilisation du mutex(bool)

En VB

Faire

Dim mut as Mutex = new Mutex(True)

Équivaut à faire

Dim mut as Mutex = new Mutex(False)
// tentative d’acquisition du mutex
mut.WaitOne()

En c#

Mutex mut = new Mutex(true);

Equivaut à faire

Mutex mut = new Mutex(false);
// On attend jusqu’a se que l’on ai le droit d’entrer dans la partie du code protégé.
mut.WaitOne();

Ou équivaut à faire

Mutex mut = new Mutex();
// Wait until it is safe to enter
mut.WaitOne();

Définition

Au fait, savez vous ce que signifie le mot ‘Mutex‘?
En fait, mutex est une abbréavition qui signifie :
« MUTual EXclusion lock »
Ce qui pourrait être traduit par :
« Verrou d’exclusion mutuelle ».

Schéma de gestion des mutex

Schéma de gestion des mutex


Pour aller plus loin avec les mutex:
Vous serez peut être intéressez par les articles suivants :
Mes sources:
Pour rappel:

« Lorsque deux ou plusieurs threads doivent accéder à une ressource partagée en même temps, le système a besoin d’un mécanisme de synchronisation pour garantir qu’un seul thread à la fois utilise cette ressource. Mutex est une primitive de synchronisation qui accorde à un seul thread un accès exclusif à la ressource partagée. Si un thread acquiert un mutex, l’autre thread qui veut acquérir ce mutex est interrompu jusqu’à ce que le premier thread libère le mutex. »

Mots clefs liés à cet article:

  • vb net datagridview accents
  • algorithme palindrome en vb
  • ip=213 186 33 82
  • fusionner cellules datagridview vb net
  • que signifie mutex
  • produit des colonne dun datagridview
  • plusieur instance de fonction suchargé visual studio
  • mysql datagridview c# caractere speciaux
  • Mutex in c#
  • C# palindrome remplacer les accents