Junior — Middle
Lehetséges több zárolási mechanizmust (Mutex) alkalmazni ugyanabban a funkcióban egyszerre?
sobes.tech MI
Válasz az MI-től
Igen, a Go nyelvben lehet több mutexet (Mutex) használni ugyanabban a függvényben egyszerre. Ez gyakran előfordul, amikor különböző erőforrásokat vagy adatrészeket kell védeni, amelyek nem kapcsolódnak egymáshoz. A legfontosabb, hogy elkerüljük a kölcsönös blokkolásokat (deadlock), amikor egy mutex várja egy másik felszabadítását, miközben az utóbbi az elsőt várja.
Példa több mutex használatára:
var mu1 sync.Mutex
var mu2 sync.Mutex
func updateResources() {
mu1.Lock()
defer mu1.Unlock()
// Az első erőforrással végzett munka
mu2.Lock()
defer mu2.Unlock()
// A második erőforrással végzett munka
}
A deadlock elkerülése érdekében mindig ugyanabban a sorrendben javasolt zárolni a mutexeket a kód minden pontján.