Sobes.tech
Junior — Middle

¿Cómo se coordina el trabajo de varias goroutines en Go?

sobes.tech AI

Respuesta de la IA

En Go, la coordinación del trabajo de varias goroutines generalmente se realiza mediante canales (channels) y el paquete sync.

  • Canales permiten a las goroutines intercambiar datos y sincronizar la ejecución, bloqueando al remitente o al receptor hasta que estén listos.
  • sync.WaitGroup se usa para esperar a que un grupo de goroutines termine.
  • Mutex y otros primitivas de sync proporcionan acceso seguro a recursos compartidos.

Ejemplo de uso de un canal para sincronización:

ch := make(chan int)
func() {
    // Realizar trabajo
    ch <- 1 // señal de finalización
}()

<-ch // esperar la señal

De esta forma, los canales y primitivas de sincronización permiten coordinar de manera eficiente tareas paralelas.