Junior — Middle
¿Se pueden obtener valores de un canal en varias goroutines al mismo tiempo?
sobes.tech AI
Respuesta de la IA
Sí, varias goroutines pueden leer simultáneamente valores de un mismo canal en Go. Los canales en Go soportan lectura y escritura múltiples, lo que permite que varias goroutines lean de un mismo canal en paralelo.
Sin embargo, es importante tener en cuenta que si varias goroutines leen de un mismo canal, cada valor será recibido solo por una de ellas — los valores no se duplican. Esto es útil para distribuir trabajo entre goroutines (pool de trabajadores).
Ejemplo:
ch := make(chan int)
// Iniciamos varias goroutines que leen del canal
for i := 0; i < 3; i++ {
go func(id int) {
for val := range ch {
fmt.Printf("Goroutine %d recibió %d\n", id, val)
}
}(i)
}
// Enviamos datos al canal
for i := 0; i < 10; i++ {
ch <- i
}
close(ch)
En este ejemplo, los valores del canal se distribuyen entre las tres goroutines.