Junior — Middle
Môžu sa kanály použiť ako mechanizmus na koordináciu vykonávania úloh medzi goroutines?
sobes.tech AI
Odpoveď od AI
Áno, v Go sú kanály (channels) hlavným mechanizmom na koordináciu a synchronizáciu vykonávania úloh medzi gorutinami. Umožňujú bezpečne prenášať údaje medzi gorutinami a zároveň blokujú odosielateľa alebo príjemcu, kým druhá strana nebude pripravená.
Príklad použitia kanála na koordináciu:
ch := make(chan int)
func() {
// Vykonanie úlohy
ch <- 1 // Odoslanie signálu o dokončení
}()
// Čakanie na signál z gorutiny
<-ch
Týmto spôsobom kanály pomáhajú predísť dátovým súťažiam a zjednodušujú synchronizáciu medzi gorutinami.