Sobes.tech
Junior — Middle

Kā apturēt goroutine izpildi pēc noteikta laika, ja rezultāts nav saņemts?

sobes.tech AI

Atbilde no AI

Go valodā, lai pārtrauktu gorutīnas izpildi pēc noteikta laika, parasti izmanto select ar taimeri vai kontekstu ar laika ierobežojumu.

Piemērs ar time.After:

select {
case result := <-ch:
    // rezultāta apstrāde
case <-time.After(2 * time.Second):
    // laika limits — rezultāts nav saņemts 2 sekundēs
}

Piemērs ar kontekstu:

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

select {
case result := <-ch:
    // rezultāta apstrāde
case <-ctx.Done():
    // laika limits vai atcelšana
}

Tādā veidā, ja rezultāts nenāk laikā, izpildi var pārtraukt un laika limitu pārvaldīt.