Junior — Middle
Ako zastaviť vykonávanie gorutiny po uplynutí stanoveného času, ak výsledok nebol prijatý?
sobes.tech AI
Odpoveď od AI
V jazyku Go sa na ukončenie vykonávania gorutiny po uplynutí stanoveného času zvyčajne používame select s časovačom alebo kontext s časovým limitom.
Príklad s time.After:
select {
case result := <-ch:
// spracovanie výsledku
case <-time.After(2 * time.Second):
// timeout — výsledok nebol prijatý za 2 sekundy
}
Príklad s kontextom:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-ch:
// spracovanie výsledku
case <-ctx.Done():
// timeout alebo zrušenie
}
Týmto spôsobom, ak výsledok nepríde včas, vykonávanie môže byť prerušené a timeout spracovaný.