Junior — Middle
What is the purpose of using child contexts in the system?
sobes.tech AI
Answer from AI
In Go, child contexts are created from parent contexts using functions like context.WithCancel, context.WithTimeout, or context.WithDeadline. The purpose of using child contexts:
- Managing the lifetime of operations: a child context can be canceled independently of the parent, allowing control over specific tasks.
- Passing cancellation signals: if the parent context is canceled, all children are canceled, ensuring cascading termination of related operations.
- Adding constraints: e.g., setting a timeout or deadline for a child context without changing the parent.
Example:
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
// ctx — child context with 5-second timeout
go func(ctx context.Context) {
select {
case <-time.After(10 * time.Second):
fmt.Println("Operation completed")
case <-ctx.Done():
fmt.Println("Operation canceled or timed out")
}
}(ctx)
// cancel() can be called to manually cancel the child context
Thus, child contexts allow flexible management of operation lifetimes and cancellation in task hierarchies.