Sobes.tech
Junior — Middle

¿Cuál es el objetivo de usar contextos hijos en el sistema?

sobes.tech AI

Respuesta de la IA

En Go, los contextos hijos (child contexts) se crean a partir de los contextos padres mediante las funciones context.WithCancel, context.WithTimeout o context.WithDeadline. El objetivo de usar contextos hijos:

  • Gestión del tiempo de vida de las operaciones: el contexto hijo puede cancelarse independientemente del padre, lo que permite controlar la ejecución de tareas específicas.
  • Transmisión de señales de cancelación: si el contexto padre se cancela, todos los hijos también se cancelan, asegurando la finalización en cascada de las operaciones relacionadas.
  • Agregar restricciones: por ejemplo, establecer un tiempo de espera o un plazo límite para el contexto hijo sin modificar el padre.

Ejemplo:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — contexto hijo con un tiempo de espera de 5 segundos

go func(ctx context.Context) {
    select {
    case <-time.After(10 * time.Second):
        fmt.Println("Operación completada")
    case <-ctx.Done():
        fmt.Println("Operación cancelada o agotada")
    }
}(ctx)

// Se puede llamar a cancel() para cancelar manualmente el contexto hijo

De esta manera, los contextos hijos permiten gestionar de forma flexible el tiempo de vida y la cancelación de operaciones en una jerarquía de tareas.