Sobes.tech
Junior — Middle

Pourriez-vous expliquer le principe de fonctionnement du mutex et son utilisation dans les programmes multithread?

sobes.tech IA

Réponse de l'IA

L’exclusion mutuelle (Mutex) est un mécanisme de synchronisation utilisé pour empêcher l’accès simultané de plusieurs threads à une ressource partagée (par exemple, une variable ou un fichier). Le Mutex garantit qu’à tout moment, un seul thread peut posséder le verrou et exécuter la section critique du code.

Principe de fonctionnement :

  • Le thread tente d’acquérir le mutex avant d’entrer dans la section critique.
  • Si le mutex est libre, le thread obtient l’accès et continue.
  • Si le mutex est occupé par un autre thread, le thread actuel se bloque et attend qu’il soit libéré.
  • Après avoir terminé avec la ressource, le thread libère le mutex, permettant à d’autres threads de continuer.

En Go, cela est réalisé via le type sync.Mutex :

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()         // acquisition du mutex
    counter++         // section critique
    mu.Unlock()       // libération du mutex
}

L’utilisation du mutex empêche les conditions de course et assure l’intégrité des données lors de l’exécution parallèle.