전파 취소 없이 Go 컨텍스트를 복제하는 방법
Go 프로그래밍 언어에서 context.Context는 함수 간에 메타데이터와 취소 신호를 전달합니다. 그리고 고루틴. 그러나 동일한 값을 유지하지만 원본의 취소 상태를 상속하지 않는 컨텍스트의 복사본을 생성하는 것이 바람직할 수 있습니다.
사용 사례:
이 시나리오는 클라이언트에 응답을 반환한 후 HTTP 요청의 컨텍스트가 취소될 때 발생하지만 상위 고루틴보다 오래 지속될 수 있는 별도의 고루틴에서 비동기 작업을 수행해야 합니다. 상황에 맞게.
해결책:
1. 사용자 정의 컨텍스트 구현 만들기:
Go 1.21 이전에는 자신만의 컨텍스트를 만드는 것이 한 가지 접근 방식이었습니다. 절대 취소되지 않는 컨텍스트 구현:
그런 다음 이 구현을 사용하는 새로운 컨텍스트:
2. WithoutCancel 함수 사용(Go 1.21 ):
Go 1.21부터 컨텍스트 패키지에는 이 프로세스를 단순화하는 WithoutCancel 함수가 포함됩니다.
이 함수는 다음과 같은 새 컨텍스트를 반환합니다. 원래 컨텍스트와 동일한 값을 공유하지만 취소.
예:
이렇게 하면 doSomethingElse는 요청 컨텍스트가 취소된 후에도 계속 실행됩니다.
위 내용은 전파 취소 없이 Go 컨텍스트를 복제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!