Junior — Middle
Context.Done ыкмасы асинхрондук операцияларды аяктоо башкарууда кандай роль ойнойт?
sobes.tech AI
AIден жооп
Context.Done() ыкмасы кайтарган канал, ал контекст жок кылынганда же анын мөөнөтү аяктагында жабылат. Бул асинхрондук операцияларга бүтүшү жөнүндө сигналды аныктоого жана туура үзгүлтүккө учуратууга мүмкүндүк берет.
Мисалы, goroutine ичинде, сиз бул каналды байкап, контекст жок кылынганда ишти аяктоого болот:
ctx, cancel := context.WithCancel(context.Background())
go func() {
select {
case <-ctx.Done():
// Контекст жок кылынды, аяктоо
return
case data := <-dataCh:
// Маалыматты иштетүү
}
}()
// Кийинчерээк, goroutine'ни токтотуу үчүн cancel() чакырыңыз
cancel()
Ушул жол менен, Context.Done() коопсуз жана убагында асинхрондук операцияларды аяктоо үчүн сигнал кызматын аткарат.