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() огоҳ мешавад ва метавонад кори худро дуруст анҷом диҳад.