Junior — Middle
Czy możesz wyjaśnić, czym jest wzajemne wykluczenie (Mutex) i jak działa?
sobes.tech AI
Odpowiedź od AI
Mutualne wykluczenie (Mutex) to mechanizm synchronizacji, który gwarantuje, że w danym momencie tylko jedna gorutyna (wątek) może uzyskać dostęp do określonego zasobu lub sekcji krytycznej kodu.
W Go używa się do tego typu sync.Mutex. Gdy gorutyna wywołuje Lock(), blokuje mutex, a inne gorutyny próbujące wywołać Lock() będą czekać, aż mutex zostanie odblokowany przez Unlock().
Przykład:
var mu sync.Mutex
var counter int
func increment() {
mu.Lock()
defer mu.Unlock()
counter++
}
W tym przykładzie increment bezpiecznie zwiększa wartość counter, zapobiegając jednoczesnemu dostępowi wielu gorutyn.