>  기사  >  백엔드 개발  >  전파 취소 없이 Go 컨텍스트를 복제하는 방법은 무엇입니까?

전파 취소 없이 Go 컨텍스트를 복제하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-08 14:17:02598검색

How to Clone a Go Context Without Cancel Propagation?

전파 취소 없이 Go 컨텍스트를 복제하는 방법

Go 프로그래밍 언어에서 context.Context는 함수 간에 메타데이터와 취소 신호를 전달합니다. 그리고 고루틴. 그러나 동일한 값을 유지하지만 원본의 취소 상태를 상속하지 않는 컨텍스트의 복사본을 생성하는 것이 바람직할 수 있습니다.

사용 사례:

이 시나리오는 클라이언트에 응답을 반환한 후 HTTP 요청의 컨텍스트가 취소될 때 발생하지만 상위 고루틴보다 오래 지속될 수 있는 별도의 고루틴에서 비동기 작업을 수행해야 합니다. 상황에 맞게.

해결책:

1. 사용자 정의 컨텍스트 구현 만들기:

Go 1.21 이전에는 자신만의 컨텍스트를 만드는 것이 한 가지 접근 방식이었습니다. 절대 취소되지 않는 컨텍스트 구현:

그런 다음 이 구현을 사용하는 새로운 컨텍스트:

2. WithoutCancel 함수 사용(Go 1.21 ):

Go 1.21부터 컨텍스트 패키지에는 이 프로세스를 단순화하는 WithoutCancel 함수가 포함됩니다.

이 함수는 다음과 같은 새 컨텍스트를 반환합니다. 원래 컨텍스트와 동일한 값을 공유하지만 취소.

예:

이렇게 하면 doSomethingElse는 요청 컨텍스트가 취소된 후에도 계속 실행됩니다.

위 내용은 전파 취소 없이 Go 컨텍스트를 복제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.