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