Sobes.tech
Junior — Middle

Tizimda bolalar kontekstlarini ishlatish maqsadi nima?

sobes.tech AI

AIdan javob

Go tilida, bolalar kontekstlari (child contexts) ota-ota kontekstlaridan context.WithCancel, context.WithTimeout yoki context.WithDeadline funksiyalari yordamida yaratiladi. Bolalar kontekstlarini ishlatish maqsadi:

  • Amaliyotlarning hayot davrini boshqarish: bolalar konteksti ota-ota kontekstdan mustaqil ravishda bekor qilinishi mumkin, bu esa ma'lum vazifalarni bajarishni nazorat qilish imkonini beradi.
  • Bekor qilish signallarini uzatish: agar ota-ota kontekst bekor qilinsa, barcha bolalar kontekstlari ham bekor qilinadi, bu esa bog'langan operatsiyalarni zanjirli tarzda yakunlashni ta'minlaydi.
  • Cheklovlar qo'shish: masalan, ota-ota kontekstini o'zgartirmasdan, bolalar kontekst uchun timeout yoki deadline belgilash.

Misol:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — 5 sekundlik timeout bilan bolalar konteksti

go func(ctx context.Context) {
    select {
    case <-time.After(10 * time.Second):
        fmt.Println("Operatsiya yakunlandi")
    case <-ctx.Done():
        fmt.Println("Operatsiya bekor qilindi yoki vaqt o'tdi")
    }
}(ctx)

// cancel() ni chaqirish orqali bolalar kontekstini qo'lda bekor qilish mumkin

Shu tarzda, bolalar kontekstlari vazifalar hierarhiyasida operatsiyalarning hayot davri va bekor qilishni moslashuvchan boshqarish imkonini beradi.