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.