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.