Sobes.tech
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.