Junior — Middle
Is het mogelijk om meerdere mutex-mechanismen tegelijk binnen één functie toe te passen?
sobes.tech AI
Antwoord van AI
Ja, in Go is het mogelijk om meerdere mutexen (Mutex) binnen één functie tegelijk te gebruiken. Dit komt vaak voor wanneer je verschillende bronnen of delen van gegevens wilt beschermen die niet met elkaar verbonden zijn. Het belangrijkste is om deadlocks te voorkomen, situaties waarin een mutex wacht op de vrijgave van een andere mutex, terwijl die andere mutex op de eerste wacht.
Voorbeeld van het gebruik van meerdere mutexen:
var mu1 sync.Mutex
var mu2 sync.Mutex
func updateResources() {
mu1.Lock()
defer mu1.Unlock()
// Werken met de eerste bron
mu2.Lock()
defer mu2.Unlock()
// Werken met de tweede bron
}
Om deadlocks te voorkomen, wordt aanbevolen om mutexen altijd in dezelfde volgorde te vergrendelen op alle plaatsen in de code.