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