Junior — Middle
¿Qué sucede con una goroutine cuando se bloquea en la ejecución de algún proceso u operación?
sobes.tech AI
Respuesta de la IA
Cuando una goroutine en Go se bloquea en una operación (por ejemplo, lectura de un canal, espera de sincronización, entrada/salida), se suspende, y el planificador de Go libera el hilo del sistema para ejecutar otras goroutines. Esto permite utilizar eficientemente los recursos del sistema y escalar el paralelismo.
Es decir, una operación bloqueante no bloquea toda la hebra del sistema operativo, sino solo la goroutine específica. El planificador cambia a otras goroutines que están listas para ejecutarse.
Ejemplo:
ch := make(chan int)
func() {
val := <-ch // la goroutine se bloquea hasta recibir un valor
fmt.Println(val)
}()
ch <- 42 // desbloquea la goroutine
En este ejemplo, la goroutine se bloquea en la lectura del canal, pero el planificador permite que otras goroutines trabajen mientras espera.