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.