Junior — Middle
Asinxron operatsiyalarni yakunlashni boshqarishda Context.Done metodining roli nima?
sobes.tech AI
AIdan javob
Context.Done() usuli, kontekst bekor qilinganda yoki uning amal qilish muddati tugagach yopiladigan kanalni qaytaradi. Bu, asinxron operatsiyalarni yakunlash signalini aniqlash va to'g'ri to'xtatish imkonini beradi.
Masalan, goroutine ichida, bu kanalni tinglash va kontekst bekor qilinganda ishni yakunlash mumkin:
ctx, cancel := context.WithCancel(context.Background())
go func() {
select {
case <-ctx.Done():
// Kontekst bekor qilindi, yakunlash
return
case data := <-dataCh:
// Ma'lumotlarni qayta ishlash
}
}()
// Keyinchalik, goroutine'ni to'xtatish uchun cancel() chaqiriladi
cancel()
Shunday qilib, Context.Done() xavfsiz va o'z vaqtida asinxron operatsiyalarni yakunlash uchun signal vazifasini bajaradi.