Sobes.tech
Junior — Middle

Meg tudnád magyarázni, mi az a kölcsönös kizárás (Mutex), és hogyan működik?

sobes.tech MI

Válasz az MI-től

Mutual exclusion (Mutex) egy szinkronizációs mechanizmus, amely garantálja, hogy egy adott pillanatban csak egy goroutine (szál) férhet hozzá egy erőforráshoz vagy kritikus szekcióhoz.

Go-ban ehhez a sync.Mutex típus használatos. Amikor egy goroutine meghívja a Lock()-ot, blokkolja a mutexet, és más goroutine-ok, amelyek a Lock()-ot próbálják hívni, várni fognak, amíg a mutex ki nem oldódik a Unlock()-kal.

Példa:

var mu sync.Mutex
var counter int

func increment() {
    mu.Lock()
    defer mu.Unlock()
    counter++
}

Ebben a példában az increment biztonságosan növeli a counter értékét, megakadályozva a több goroutine egyidejű hozzáférését.