Sobes.tech
Junior — Middle

Jak lze zastavit běh gorutiny po uplynutí stanovené doby, pokud nebyl obdržen žádný výsledek?

sobes.tech AI

Odpověď od AI

V jazyce Go se k ukončení běhu gorutiny po uplynutí stanoveného času obvykle používá select s časovačem nebo kontext s časovým limitem.

Příklad s time.After:

select {
case result := <-ch:
    // zpracování výsledku
case <-time.After(2 * time.Second):
    // timeout — výsledek nebyl získán za 2 sekundy
}

Příklad s kontextem:

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

select {
case result := <-ch:
    // zpracování výsledku
case <-ctx.Done():
    // timeout nebo zrušení
}

Tímto způsobem, pokud výsledek nepřijde včas, lze provádění přerušit a timeout ošetřit.