Junior — Middle
¿Es posible que una goroutine sea interrumpida o se detenga por sí sola?
sobes.tech AI
Respuesta de la IA
En Go, la ejecución de una gorutina puede terminar por sí sola en varias situaciones:
- La gorutina ha terminado su función. Tan pronto como la función ejecutada en la gorutina finaliza, la gorutina se cierra.
- Pánico dentro de la gorutina. Si ocurre un pánico dentro de la gorutina y no se maneja, la gorutina terminará de forma abrupta.
- Cancelación mediante contexto (context). Si la gorutina escucha una señal de cancelación a través de
context.Contexty la recibe, puede terminarse correctamente.
Es importante entender que las gorutinas no se interrumpen desde fuera de forma forzada — es necesario implementar un mecanismo de parada por cuenta propia, por ejemplo, mediante canales o contextos.
Ejemplo de uso de contexto para cancelar una gorutina:
ctx, cancel := context.WithCancel(context.Background())
go func(ctx context.Context) {
for {
select {
case <-ctx.Done():
fmt.Println("Gorutina finalizada")
return
default:
// trabajo
}
}
}(ctx)
// En algún momento, llamamos a cancel()
cancel()
De esta forma, la gorutina termina ya sea por sí misma al finalizar su trabajo, o por señal de cancelación, si está prevista.