«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать копию контекста в Go без распространения отмены?

Как создать копию контекста в Go без распространения отмены?

Опубликовано в 2025-03-23
Просматривать:355

How to Create a Context Copy in Go Without Cancel Propagation?

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

импорт "контекст" // Без канцеляции возвращает контекст, который никогда не отменяется. func без cancel (ctx context.context) context.context { return context.withvalue (context.background (), context.nocancel {}, struct {} {}) }

для использования без точки Результат: = DoStuff (CTX) NewContext: = context.withoutCancel (CTX) Go func () { dosomethingelse (newContext) } () вернуть результат }

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3