Junior — Middle
Jak zajistit koordinaci provádění několika operací, aby se předešlo konfliktům a chybám?
sobes.tech AI
Odpověď od AI
Pro koordinaci provádění více operací a prevenci konfliktů a chyb v Go se obvykle používají následující přístupy:
- Mutexy (sync.Mutex) — k ochraně sdílených zdrojů před současným přístupem.
var mu sync.Mutex
mu.Lock()
// kritická sekce
mu.Unlock()
- Kanály (channels) — pro synchronizaci a přenos dat mezi gorutinami, což pomáhá předcházet závodům dat.
ch := make(chan int)
go func() {
ch <- 42 // odeslání dat
}()
hodnota := <-ch // přijetí dat
- WaitGroup — pro čekání na dokončení skupiny gorutin.
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// práce
}()
wg.Wait()
- Kontexty (context.Context) — pro řízení životnosti operací a jejich zrušení.
Tato zařízení umožňují organizovat bezpečné a předvídatelné provádění paralelních operací, minimalizovat riziko konfliktů a chyb.