Sobes.tech
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() може бити позван за ручно отказивање дечијег контекста

На овај начин, дечији контексти омогућавају флексибилно управљање временом живота и отказивањем операција у хијерархији задатака.