Sobes.tech
Junior — Middle

Qual é o objetivo de usar contextos filhos no sistema?

sobes.tech IA

Resposta da IA

No Go, os contextos filhos (child contexts) são criados a partir dos contextos pais usando as funções context.WithCancel, context.WithTimeout ou context.WithDeadline. O objetivo de usar contextos filhos:

  • Gestão do tempo de vida das operações: o contexto filho pode ser cancelado independentemente do pai, permitindo controlar a execução de tarefas específicas.
  • Transmissão de sinais de cancelamento: se o contexto pai for cancelado, todos os filhos também serão, garantindo o encerramento em cascata das operações relacionadas.
  • Adicionar restrições: por exemplo, definir um tempo limite ou uma data limite para o contexto filho sem alterar o pai.

Exemplo:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — contexto filho com um tempo limite de 5 segundos

go func(ctx context.Context) {
    select {
    case <-time.After(10 * time.Second):
        fmt.Println("Operação concluída")
    case <-ctx.Done():
        fmt.Println("Operação cancelada ou expirada")
    }
}(ctx)

// cancel() pode ser chamado para cancelar manualmente o contexto filho

Dessa forma, os contextos filhos permitem gerenciar de forma flexível o tempo de vida e o cancelamento de operações em uma hierarquia de tarefas.