Sobes.tech
Junior — Middle

¿Cómo implementar una restricción de tiempo de ejecución de una operación usando context.WithTimeout en Go?

sobes.tech AI

Respuesta de la IA

En Go, para limitar el tiempo de ejecución de una operación, a menudo se utiliza un contexto con un tiempo límite mediante la función context.WithTimeout. Esta devuelve un nuevo contexto y una función de cancelación. Si la operación no termina antes de que expire el tiempo límite, el contexto se cancela automáticamente.

Ejemplo de uso:

ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Operación finalizada:", result)
case <-ctx.Done():
    fmt.Println("Tiempo límite excedido:", ctx.Err())
}

Aquí, someLongRunningOperation debe aceptar ctx y verificar periódicamente ctx.Done() para una cancelación correcta. Esto permite cancelar de forma segura la operación en caso de tiempo límite.