Junior — Middle
¿Cómo se puede detener la ejecución de una gorutina después de un tiempo determinado si no se ha recibido ningún resultado?
sobes.tech AI
Respuesta de la IA
En Go, para detener la ejecución de una gorutina después de un tiempo determinado, generalmente se usa select con un temporizador o un contexto con un tiempo de espera.
Ejemplo con time.After:
select {
case result := <-ch:
// procesar el resultado
case <-time.After(2 * time.Second):
// tiempo de espera — no se recibió resultado en 2 segundos
}
Ejemplo con contexto:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-ch:
// procesar el resultado
case <-ctx.Done():
// tiempo de espera o cancelación
}
De esta forma, si no llega un resultado a tiempo, se puede interrumpir la ejecución y manejar el tiempo de espera.