Sobes.tech
Junior — Middle

Чӣ гуна гуруҳе мефаҳмад, ки иҷрои он тавассути контекст бекор карда шудааст?

sobes.tech AI

Ҷавоб аз AI

Горутин дар Go дарк кардани бекоршавиро тавассути контекст (context.Context) бо истифода аз канали Done(), ки дар вақти бекоршавӣ баста мешавад, мекунад.

Вақте ки контексти бо бекоршавӣ (масалан, тавассути context.WithCancel ё context.WithTimeout) эҷод мешавад, горутин метавонад канали ctx.Done()-ро гӯш кунад:

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

// Иҷрои горутин
go func() {
    select {
    case <-ctx.Done():
        // Контекст бекор шуд, бояд ба охир расад
        fmt.Println("Горутин бекор шуд")
        return
    default:
        // Корро идома диҳед
    }
}()

// Бекор кардани контекст
cancel()

Ба ин тариқ, горутин аз бекоршавӣ бо тавассути санали Done() огоҳ мешавад ва метавонад кори худро дуруст анҷом диҳад.