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.