Sobes.tech
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.