Junior — Middle
Cum se poate asigura coordonarea executării mai multor operații pentru a preveni conflictele și erorile?
sobes.tech AI
Răspuns de la AI
Pentru a coordona executarea mai multor operații și a preveni conflictele și erorile în Go, se utilizează de obicei următoarele abordări:
- Mutex-uri (sync.Mutex) — pentru a proteja resursele comune împotriva accesului simultan.
var mu sync.Mutex
mu.Lock()
// secțiune critică
mu.Unlock()
- Canale (channels) — pentru sincronizare și transfer de date între goroutines, evitând condițiile de cursă.
ch := make(chan int)
go func() {
ch <- 42 // trimiterea datelor
}()
valoare := <-ch // primirea datelor
- WaitGroup — pentru a aștepta finalizarea unui grup de goroutines.
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// muncă
}()
wg.Wait()
- Contexte (context.Context) — pentru gestionarea duratei de viață a operațiilor și anularea acestora.
Aceste instrumente permit organizarea executării sigure și previzibile a operațiilor paralele, minimizând riscurile de conflicte și erori.