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()