Sobes.tech
Junior — Middle

Kunt u het principe van mutex en het gebruik ervan in multithreadprogramma's uitleggen?

sobes.tech AI

Antwoord van AI

Mutual exclusion (Mutex) is een synchronisatie-mechanisme dat wordt gebruikt om gelijktijdige toegang van meerdere threads tot een gedeelde bron (bijvoorbeeld een variabele of een bestand) te voorkomen. Mutex garandeert dat op elk moment slechts één thread de lock kan bezitten en de kritieke sectie van de code kan uitvoeren.

Werking principe:

  • Het thread probeert de mutex te verkrijgen voordat het de kritieke sectie binnengaat.
  • Als de mutex vrij is, krijgt het thread toegang en gaat verder.
  • Als de mutex door een ander thread bezet is, wordt het huidige thread geblokkeerd en wacht tot deze wordt vrijgegeven.
  • Na voltooiing van de bewerking met de bron, geeft het thread de mutex vrij, zodat andere threads verder kunnen.

In Go wordt dit geïmplementeerd via het type sync.Mutex:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()         // mutex vergrendelen
    counter++         // kritieke sectie
    mu.Unlock()       // mutex ontgrendelen
}

Het gebruik van mutex voorkomt racecondities en zorgt voor de gegevensintegriteit tijdens parallel uitvoeren.