Для чего используется context в Go?
В Go пакет context используется для передачи сквозных сигналов отмены, дедлайнов и других значений между горутинами и функциями.
Читать ответПодготовка к интервью
17 вопросов с ответами по теме «Context и отмена в Go»
Что проверяют на интервью
Подборка о времени жизни операций в Go: от создания контекста до распространения отмены между горутинами. Отдельные вопросы посвящены тайм-аутам, дочерним контекстам, передаче значений и завершению сетевых запросов и фоновой работы.
Каталог
В Go пакет context используется для передачи сквозных сигналов отмены, дедлайнов и других значений между горутинами и функциями.
Читать ответВ Go дочерние контексты (child contexts) создаются от родительских с помощью функций context.WithCancel, context.WithTimeout или context.WithDeadline. Цель использования дочерних контекстов:
Читать ответВ Go контексты (context.Context) устроены так, что можно создавать иерархию контекстов, где дочерний контекст наследует значения и отмену от родительского.
Читать ответВ Go для создания контекста без тайм-аута используется функция context.Background(). Она возвращает пустой, неотменяемый контекст, который обычно служит корнем для других контекстов.
Читать ответПроброс сущности через контекст в Go имеет несколько недостатков:
Читать ответВ Go для передачи контекста в горутине при отправке SMS (например, для двухфакторной аутентификации) следует использовать пакет context.
Читать ответТайм-аут сигнализирует об отмене, но не убивает горутину. Сотрудничающая операция, освобождение ресурсов и ожидание завершения.
Читать ответКак выбрать между периодическим сигналом, однократным срабатыванием и распространением отмены; почему ticker не заменяет Context автоматически.
Читать ответЗачем нужен контекст в gRPC-запросах и что происходит после его отмены Контекст как инструмент управления жизненным циклом запроса в Go Передача дедлайнов, сигналов отмены и метаданных между клиентом и сервером…
Читать ответКак в Go реализовать graceful shutdown с defer, контекстом и обработкой ошибок в группах горутин? управлять завершением приложения через context.Context (cancel/cancellation) применять defer для освобождения ресурсов,…
Читать ответ** контролируйте длительность операций в Go через context, задавая таймаут и отмену с помощью context.WithTimeout и Done(). Это позволяет ограничивать время выполнения и корректно освобождать ресурсы.
Читать ответКак корректно отменять горутины, выполняющие долгие операции? для управления долгими горутинными операциями в Go используется контекст следует применять context.Context вместе с отменой (CancelFunc) context нужно…
Читать ответ