Junior — Middle
Jak je zajištěna kontrola nad prováděním a synchronizací gorutin v programu?
sobes.tech AI
Odpověď od AI
V jazyce Go sa kontrola vykonávania a synchronizácia gorútín zvyčajne vykonáva pomocou:
- WaitGroup z balíka
sync— umožňuje čakať na dokončenie skupiny gorútín. - Kanálov (channels) — slúžia na prenos dát a signálov medzi gorútinami, zabezpečujúc synchronizáciu.
Príklad s WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// práca gorútiny
}()
wg.Wait() // čakáme na dokončenie gorútiny
Kanály umožňujú napríklad prenášať výsledky alebo signály ukončenia:
ch := make(chan int)
go func() {
ch <- 42 // odoslanie hodnoty
}()
hodnota := <-ch // prijatie hodnoty, synchronizuje gorútiny
Preto sú WaitGroup a kanály hlavnými nástrojmi na kontrolu a synchronizáciu gorútín.