Sobes.tech
Junior — Middle

Kako zaustaviti izvršavanje gorutine nakon isteka određenog vremena ako rezultat nije primljen?

sobes.tech АИ

Одговор од АИ

U Go-u, za zaustavljanje izvršavanja gorutine nakon isteka određenog vremena, obično se koristi select sa timerom ili kontekst sa timeout-om.

Primer sa time.After:

select {
case result := <-ch:
    // obrada rezultata
case <-time.After(2 * time.Second):
    // timeout — rezultat nije primljen za 2 sekunde
}

Primer sa kontekstom:

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

select {
case result := <-ch:
    // obrada rezultata
case <-ctx.Done():
    // timeout ili otkazivanje
}

Na ovaj način, ako rezultat ne stigne na vreme, izvršavanje se može prekinuti i timeout obraditi.