Sobes.tech
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() коопсуз жана убагында асинхрондук операцияларды аяктоо үчүн сигнал кызматын аткарат.