Sobes.tech
Junior — Middle

Gorutina qanday qilib kontekst orqali yakunlash signali yuborilganligini biladi?

sobes.tech AI

AIdan javob

Gorutina tugash signalini kontekst orqali kanal yordamida oladi, bu context.Context ob'ektini ta'minlaydi. Odatda, Done() metodidan foydalaniladi, u kontekst bekor qilinganda yopiladigan kanalni qaytaradi. Gorutina bu kanalni sikl yoki select ichida tinglashi va uning yopilishini reaktsiya qilishi mumkin, bu operatsiyaning tugash yoki bekor qilinish signalidir.

Misol:

ctx, cancel := context.WithCancel(context.Background())

go func() {
    select {
    case <-ctx.Done():
        // Kontekst bekor qilindi, ishni yakunlaymiz
        fmt.Println("Gorutina yakunlandi")
        return
    // boshqa holatlar
    }
}()

// keyinchalik, tugashni signal qilish uchun cancel() chaqiramiz
cancel()