💬 Для чего используется дочерний контекст в Go, и как он связан с родительским контекстом? Приведите пример сценария, где это может быть полезно.



Дочерний контекст в Go используется для управления и контроля над отдельными операциями или задачами, которые являются частью большей работы, представленной родительским контекстом.



Он наследует настройки и сигналы отмены от родительского контекста, обеспечивая согласованное и управляемое выполнение операций в рамках одной иерархии задач.



Дочерний контекст создается из существующего родительского контекста с помощью таких функций, как context.WithCancel, context.WithDeadline, context.WithTimeout и context.WithValue.



📌 Связь с родительским контекстом: если родительский контекст отменяется, все связанные с ним дочерние контексты также отменяются. Это позволяет централизованно управлять группой задач и их временем жизни.



parentCtx, cancel := context.WithCancel(context.Background())

defer cancel()



childCtx, childCancel := context.WithTimeout(parentCtx, 10*time.Second)

defer childCancel()



// Здесь childCtx будет отменен либо по истечению 10 секунд, либо когда будет отменен parentCtx





📌 Простой пример: в веб-сервере, обрабатывающем HTTP-запросы, для каждого запроса создается дочерний контекст от основного контекста сервера. Если сервер должен быть остановлен, отмена основного контекста приведет к отмене всех обрабатываемых запросов, что позволяет корректно и быстро завершить работу сервера.