Junior — Middle
Meg tudná magyarázni, hogy mi az a sync.Cond feltételes változó a Go nyelvben, és mire használják?
sobes.tech MI
Válasz az MI-től
A Go nyelvben a sync.Cond egy olyan szerkezet, amely egy feltételes változót valósít meg, és a goroutine-ok szinkronizálására szolgál. Lehetővé teszi egy vagy több goroutine számára, hogy várakozzanak egy adott feltétel teljesülésére, és értesítsék a többi goroutine-ot arról, hogy ez a feltétel megváltozott.
A sync.Cond főbb metódusai:
Wait()— blokkolja az aktuális goroutine-ot, amíg egy másik goroutine nem hívja meg aSignal()vagyBroadcast()-ot.Signal()— felébreszt egy goroutine-t, amely várakozik a feltételes változón.Broadcast()— felébreszti az összes goroutine-t, amely várakozik a feltételes változón.
Használati példa:
var mu sync.Mutex
cond := sync.NewCond(&mu)
// Goroutine, amely vár egy jelzésre
go func() {
mu.Lock()
cond.Wait() // vár a jelzésre
// az ébresztés után végrehajtja a műveleteket
mu.Unlock()
}()
// Goroutine, amely küldi a jelet
mu.Lock()
cond.Signal() // felébreszt egy goroutine-t
mu.Unlock()
Így a sync.Cond segít több goroutine munkájának koordinálásában, amelyek bizonyos feltételek teljesülését várják.