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