Junior — Middle
Tashqi signal yoki shartga bog'liq holda, natija hali olinmagan bo'lsa ham, ishga tushirilgan gorutini to'g'ri qanday to'xtatish mumkin?
sobes.tech AI
AIdan javob
Go tilida ishga tushirilgan gorutini tashqi signal yoki shart bilan to'g'ri to'xtatish uchun odatda kontekst (context.Context) yoki kanallar yordamida bekor qilish signalini uzatish ishlatiladi.
Kontekstdan foydalanish misoli:
func worker(ctx context.Context) {
for {
select {
case <-ctx.Done():
// Bekor qilish signali olindi, gorutini yakunlaymiz
return
default:
// Ishni bajarish
}
}
}
func main() {
ctx, cancel := context.WithCancel(context.Background())
go worker(ctx)
// Bir muddatdan so'ng, gorutinni to'xtatish uchun cancel() chaqiramiz
cancel()
}
Bu yondashuv gorutina muntazam ravishda to'xtash signali yuborilganmi yoki yo'qligini tekshiradi va to'g'ri yakunlanadi, hatto natija hali olinmagan bo'lsa ham. Shuningdek, to'xtash signalini uzatish uchun kanal ham ishlatilishi mumkin, ammo context Go tilida yanada idiomatika va qulay usul hisoblanadi.