Junior — Middle
Môžete vysvetliť, čo je podmienená premenná sync.Cond v jazyku Go a na čo sa používa?
sobes.tech AI
Odpoveď od AI
V jazyku Go je sync.Cond štruktúra, ktorá implementuje podmienkovú premennú a slúži na synchronizáciu gorutín. Umožňuje jednej alebo viacerým gorutinám čakať na splnenie určitej podmienky a informovať ostatné gorutiny o tom, že sa táto podmienka zmenila.
Hlavné metódy sync.Cond:
Wait()— blokuje aktuálnu gorutinu, kým iná gorutina ne zavoláSignal()aleboBroadcast().Signal()— prebudí jednu gorutinu čakajúcu na podmienkovej premennej.Broadcast()— prebudí všetky gorutiny čakajúce na podmienkovej premennej.
Príklad použitia:
var mu sync.Mutex
cond := sync.NewCond(&mu)
// Gorutina, ktorá čaká na signál
go func() {
mu.Lock()
cond.Wait() // čaká na signál
// po prebudení vykonáva akcie
mu.Unlock()
}()
// Gorutina, ktorá posiela signál
mu.Lock()
cond.Signal() // prebudí jednu gorutinu
mu.Unlock()
Týmto spôsobom sync.Cond pomáha koordinovať prácu viacerých gorutín, ktoré čakajú na splnenie určitých podmienok.