Sobes.tech
Junior — Middle

Go tilida context.WithTimeout yordamida operatsiya bajarilish vaqtini qanday cheklash mumkin?

sobes.tech AI

AIdan javob

Go tilida, operatsiyaning bajarilish vaqtini cheklash uchun ko'pincha context.WithTimeout funksiyasi yordamida kontekst bilan ishlatiladi. Bu yangi kontekst va bekor qilish funksiyasini qaytaradi. Agar operatsiya timeoutdan oldin tugamasa, kontekst avtomatik ravishda bekor qilinadi.

Foydalanish misoli:

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

select {
case result := <-someLongRunningOperation(ctx):
    fmt.Println("Operatsiya tugadi:", result)
case <-ctx.Done():
    fmt.Println("Timeout oshdi:", ctx.Err())
}

Bu yerda, someLongRunningOperation ctx ni qabul qilishi va to'g'ri to'xtash uchun ctx.Done() ni vaqti-vaqti bilan tekshirishi kerak. Bu timeout bo'lsa, operatsiyani xavfsiz tarzda to'xtatishga imkon beradi.