Junior — Middle
Cum se realizează controlul și sincronizarea gorutinelor în program?
sobes.tech AI
Răspuns de la AI
În Go, controlul execuției și sincronizarea goroutine-urilor se realizează de obicei cu:
- WaitGroup din pachetul
sync— permite așteptarea finalizării unui grup de goroutine-uri. - Canale (channels) — sunt utilizate pentru transmiterea datelor și semnalelor între goroutine-uri, asigurând sincronizarea.
Exemplu cu WaitGroup:
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
// lucru de goroutine
}()
wg.Wait() // așteptăm finalizarea goroutine-ului
Canalele permit, de exemplu, transmiterea rezultatelor sau semnalelor de finalizare:
ch := make(chan int)
go func() {
ch <- 42 // trimiterea valorii
}()
valoare := <-ch // primirea valorii, sincronizează goroutine-urile
Prin urmare, WaitGroup și canalele sunt principalele instrumente pentru controlul și sincronizarea goroutine-urilor.