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.