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.