Junior — Middle
Qual è lo scopo di utilizzare i contesti figli nel sistema?
sobes.tech AI
Risposta dell'AI
In Go, i contesti figli (child contexts) vengono creati dai contesti genitori utilizzando le funzioni context.WithCancel, context.WithTimeout o context.WithDeadline. Lo scopo di usare i contesti figli:
- Gestione del tempo di vita delle operazioni: il contesto figlio può essere annullato indipendentemente dal genitore, consentendo di controllare l'esecuzione di compiti specifici.
- Trasmissione di segnali di cancellazione: se il contesto genitore viene annullato, anche tutti i contesti figli vengono annullati, garantendo una terminazione a cascata delle operazioni collegate.
- Aggiunta di restrizioni: ad esempio, impostare un timeout o una scadenza per il contesto figlio senza modificare quello genitore.
Esempio:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — contesto figlio con timeout di 5 secondi
go func(ctx context.Context) {
select {
case <-time.After(10 * time.Second):
fmt.Println("Operazione completata")
case <-ctx.Done():
fmt.Println("Operazione cancellata o scaduta")
}
}(ctx)
// cancel() può essere chiamato per cancellare manualmente il contesto figlio
In questo modo, i contesti figli consentono di gestire in modo flessibile il tempo di vita e la cancellazione delle operazioni in una gerarchia di task.