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