Junior — Middle
Kaip įgyvendinti operacijos vykdymo laiko apribojimą naudojant context.WithTimeout Go kalboje?
sobes.tech AI
Atsakymas iš AI
Go kalboje dažnai naudojamas kontekstas su laiko limitu per funkciją context.WithTimeout, siekiant apriboti operacijos vykdymo laiką. Ji grąžina naują kontekstą ir funkciją jį atšaukti. Jei operacija nebaigiama iki laiko limito pabaigos, kontekstas automatiškai atšaukiamas.
Naudojimo pavyzdys:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-someLongRunningOperation(ctx):
fmt.Println("Operacija baigta:", result)
case <-ctx.Done():
fmt.Println("Laiko limitas pasibaigė:", ctx.Err())
}
Čia someLongRunningOperation turi priimti ctx ir reguliariai tikrinti ctx.Done() teisingam nutraukimui. Tai leidžia saugiai nutraukti operaciją, jei pasibaigia laiko limitas.