typestar

Context y cancelación en Go

Propagar plazos y señales de cancelación.

func work(ctx context.Context, d time.Duration) error {
    select {
    case <-time.After(d):
        return nil
    case <-ctx.Done():
        return ctx.Err()
    }
}

func run() error {
    ctx, cancel := context.WithTimeout(context.Background(), time.Second)
    defer cancel()
    return work(ctx, 2*time.Second)
}

Cómo funciona

  1. WithTimeout devuelve un contexto y su cancel.
  2. <-ctx.Done() se dispara cuando expira.
  3. errors.Is comprueba DeadlineExceeded.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
14
Caracteres a escribir
276
Tokens
84
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 48 segundos.

Escribe este fragmento

Paso 1 de 3 en Context; paso 11 de 25 en Concurrencia.

← Anterior Siguiente →