Junior — Middle
Lze současně v jedné funkci použít více mechanismů blokování (Mutex)?
sobes.tech AI
Odpověď od AI
Ano, v jazyce Go je možné současně používat více mutexů (Mutex) uvnitř jedné funkce. Často se to používá, když je třeba chránit různé zdroje nebo části dat, které spolu nesouvisí. Hlavní je vyhnout se vzájemným zámkům (deadlock), kdy jeden mutex čeká na uvolnění jiného, a ten zase čeká na první.
Příklad použití více mutexů:
var mu1 sync.Mutex
var mu2 sync.Mutex
func updateResources() {
mu1.Lock()
defer mu1.Unlock()
// Práce s prvním zdrojem
mu2.Lock()
defer mu2.Unlock()
// Práce s druhým zdrojem
}
Aby se předešlo deadlockům, doporučuje se vždy zamykat mutexy ve stejném pořadí na všech místech kódu.