Junior — Middle
Koji je cilj korišćenja podređenih konteksta u sistemu?
sobes.tech АИ
Одговор од АИ
У Go-у, контексти деце (child contexts) се креирају из родитељских контекста помоћу функција context.WithCancel, context.WithTimeout или context.WithDeadline. Циљ коришћења дечијих контекста:
- Управљање временом живота операција: дечији контекст може бити отказан независно од родитељског, што омогућава контролу извршавања одређених задатака.
- Пренос сигнала отказа: ако се родитељски контекст отказује, сви дечији контексти такође се отказују, обезбеђујући каскадно завршетак повезаних операција.
- Додавање ограничења: на пример, постављање временског ограничења или рокова за дечији контекст без промене родитељског.
Пример:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — дечији контекст са временским ограничењем од 5 секунди
go func(ctx context.Context) {
select {
case <-time.After(10 * time.Second):
fmt.Println("Операција завршена")
case <-ctx.Done():
fmt.Println("Операција отказана или истекла")
}
}(ctx)
// cancel() може бити позван за ручно отказивање дечијег контекста
На овај начин, дечији контексти омогућавају флексибилно управљање временом живота и отказивањем операција у хијерархији задатака.