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
WithTimeoutdevuelve un contexto y sucancel.<-ctx.Done()se dispara cuando expira.errors.IscompruebaDeadlineExceeded.
Palabras clave y builtins usados aquí
casedefererrorfuncreturnselect
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.
Paso 1 de 3 en Context; paso 11 de 25 en Concurrencia.