Junior — Middle
Ako zabezpečiť koordináciu vykonávania viacerých operácií, aby sa predišlo konfliktom a chybám?
sobes.tech AI
Odpoveď od AI
Na koordináciu vykonávania viacerých operácií a prevenciu konfliktov a chýb v Go sa zvyčajne používajú nasledujúce prístupy:
- Mutexy (sync.Mutex) — na ochranu zdieľaných zdrojov pred súčasným prístupom.
var mu sync.Mutex
mu.Lock()
// kritická sekcia
mu.Unlock()
- Kanály (channels) — na synchronizáciu a prenos dát medzi gorutinami, čím sa zabraňuje súťažiam o dáta.
ch := make(chan int)
go func() {
ch <- 42 // odoslanie dát
}()
hodnota := <-ch // prijatie dát
- WaitGroup — na čakanie na dokončenie skupiny gorutín.
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// práca
}()
wg.Wait()
- Kontexty (context.Context) — na riadenie životnosti operácií a ich zrušenie.
Tieto nástroje umožňujú organizovať bezpečné a predvídateľné vykonávanie paralelných operácií, minimalizujúc riziká konfliktov a chýb.