Sobes.tech
Junior — Middle

Kaip sustabdyti goroutine vykdymą po nustatyto laiko, jei rezultatas nebuvo gautas?

sobes.tech AI

Atsakymas iš AI

Go kalboje, norint sustabdyti gorutinos vykdymą po nustatyto laiko, dažniausiai naudojamas select su laikmačiu arba kontekstu su laiko limitu.

Pavyzdys su time.After:

select {
case result := <-ch:
    // rezultatų apdorojimas
case <-time.After(2 * time.Second):
    // laiko limitas — rezultatas nebuvo gautas per 2 sekundes
}

Pavyzdys su kontekstu:

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

select {
case result := <-ch:
    // rezultatų apdorojimas
case <-ctx.Done():
    // laiko limitas arba atšaukimas
}

Tokiu būdu, jei rezultatas neateina laiku, vykdymas gali būti nutrauktas ir laiko limitas valdomas.