Sobes.tech
Junior — Middle

Cum se realizează coordonarea muncii mai multor goroutines în Go?

sobes.tech AI

Răspuns de la AI

În Go, coordonarea muncii mai multor goroutines se face de obicei cu ajutorul canalelor (channels) și pachetului sync.

  • Canalele permit goroutine-urilor să schimbe date și să sincronizeze execuția, blocând expeditorul sau receptorul până când sunt gata.
  • sync.WaitGroup este folosit pentru a aștepta finalizarea unui grup de goroutine-uri.
  • Mutex și alte primitive din sync asigură accesul sigur la resursele partajate.

Exemplu de utilizare a unui canal pentru sincronizare:

ch := make(chan int)
func() {
    // Executarea muncii
    ch <- 1 // semnal de finalizare
}()

<-ch // așteptarea semnalului

Astfel, canalele și primitivele de sincronizare permit coordonarea eficientă a sarcinilor paralele.