Golang의
ctx는 Context의 약어로 표준 라이브러리의 유형으로 요청 범위별 값, 취소 신호, "goroutine" 간의 기한과 같은 메타데이터를 전송하는 데 사용됩니다.
이 튜토리얼의 운영 체제: Windows 10 시스템, Go1.20.1 버전, Dell G3 컴퓨터.
Golang에서 ctx는 Context의 약어로, 표준 라이브러리의 타입입니다.
Context 유형은 요청 범위별 값, 취소 신호 및 고루틴 간의 기한과 같은 메타데이터를 전달하는 데 사용됩니다. 요청을 생성할 때 루트 컨텍스트가 생성되어 애플리케이션 전체의 호출 체인에 전달될 수 있습니다. 요청이 전파되면 이 컨텍스트는 다른 고루틴에 의해 복사되어 기본 통신에 사용될 수 있습니다.
ctx의 주요 기능은 다음과 같습니다.
메타데이터 전송: HTTP 요청 네트워크 호출 체인에서 일부 메타데이터 정보(예: 사용자 인증 토큰)를 전달하고 사용하는 것이 선호되는 방법입니다. 이 시나리오를 구현하세요.
제어 흐름 시간 초과 및 취소: 다중 레벨 함수 중첩 호출 체인에서는 오류가 호출 체인의 각 레이어를 통과해야 하는 경우가 있으며, 경우에 따라 Goroutine을 동시에 취소해야 하는 경우도 있습니다. 그러한 문제를 해결하는 방법.
다음은 ctx를 사용하여 고루틴의 취소 및 시간 초과를 제어하는 방법을 보여주는 간단한 샘플 코드입니다.
func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() // 常用结合 defer 安排执行 go doSomething(ctx) time.Sleep(10 * time.Second) } func doSomething(ctx context.Context) { select { case <-time.After(time.Hour): fmt.Println("do something") case <-ctx.Done(): fmt.Println("canceled by user:", ctx.Err()) } }
샘플 코드에서는 `context.WithCancel`을 사용하여 컨텍스트를 생성하고 취소 함수(`cancel()`)를 전달한 다음 이를 `doSomething` 함수에 전달합니다. `doSomething`에서는 `select`를 통해 채널 중 2개를 모니터링하고 10초가 지나면 메인 고루틴이 `cancel` 기능을 실행하여 `ctx`에 Done 신호를 보내고, 이로 인해 `doSomething` 수신의 고루틴이 발생합니다. 이 신호와
위 내용은 golang의 ctx 란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!