Sobes.tech
Junior — Middle

როგორ შეიძლება გავაჩეროთ goroutine-ის შესრულება განსაზღვრული დროის გასვლის შემდეგ, თუ შედეგი არ მიუღია?

sobes.tech AI

პასუხი AI-სგან

Go dilində, müəyyən edilmiş vaxt keçdikdən sonra gorutinanın icrasını dayandırmaq üçün adətən select ilə timer və ya timeout olan kontekst istifadə olunur.

time.After ilə nümunə:

select {
case result := <-ch:
    // nəticəni emal et
case <-time.After(2 * time.Second):
    // vaxt bitdi — nəticə 2 saniyə ərzində alınmadı
}

Kontekst ilə nümunə:

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

select {
case result := <-ch:
    // nəticəni emal et
case <-ctx.Done():
    // vaxt bitdi və ya ləğv edildi
}

Beləliklə, əgər nəticə vaxtında gəlməzsə, icra dayandırıla və vaxt limiti idarə oluna bilər.