Junior — Middle
Ako sa zabezpečuje koordinácia práce viacerých gorutín v Go?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa koordinácia práce viacerých gorutín zvyčajne vykonáva pomocou kanálov (channels) a balíka sync.
- Kanály umožňujú gorutinám vymieňať si údaje a synchronizovať vykonávanie, blokovaním odosielateľa alebo príjemcu, kým nie sú pripravení.
- sync.WaitGroup sa používa na čakanie na dokončenie skupiny gorutín.
- Mutex a ďalšie primitives z sync zabezpečujú bezpečný prístup k zdieľaným zdrojom.
Príklad použitia kanála na synchronizáciu:
ch := make(chan int)
func() {
// Vykonanie práce
ch <- 1 // signál o ukončení
}()
<-ch // čakanie na signál
Týmto spôsobom kanály a primitives na synchronizáciu umožňujú efektívne koordinovať paralelné úlohy.