Sobes.tech
Junior — Middle

Можеш ли да објасниш шта је међусобно искључење (Mutex) и како ради?

sobes.tech АИ

Одговор од АИ

Mutual exclusion (Mutex) je mehanizam sinhronizacije koji garantuje da u jednom trenutku samo jedna gorutina (nit) može pristupiti određenom resursu ili kritičnoj sekciji koda.

U Go jeziku za to se koristi tip sync.Mutex. Kada gorutina pozove Lock(), ona blokira mutex, i druge gorutine koje pokušaju da pozovu Lock() će čekati dok mutex ne bude otključan pomoću Unlock().

Primer:

var mu sync.Mutex
var counter int

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

U ovom primeru, increment sigurno povećava vrednost counter, sprečavajući istovremeni pristup od strane više gorutina.