Sobes.tech
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.