Sobes.tech
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ý.