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.