Golang 컨텍스트

Golang에서 컨텍스트는 동시성 및 네트워킹 코드에서 사용되는 중요한 패턴입니다.

프로세스 내에서 실행되는 코드 간에 정보를 공유하는 데 사용되는 작은 개체로 생각할 수 있습니다.

컨텍스트는 고루틴 간의 통신을 통해 전달됩니다.

컨텍스트는 여러 값을 포함할 수 있지만 일반적으로 다음 정보를 포함합니다.

  • 요청 기한
  • 취소 신호
  • 인정 받은
  • 범위 데이터 요청

일반적으로 Context는 함수를 실행하는 서브루틴에 함수 매개변수로 전달됩니다.

컨텍스트는 요청 범위 데이터를 전달하며 여러 함수를 통해 전달될 수 있습니다.

Context 패키지는 다양한 기본 메소드를 제공합니다.

그 중에서 가장 중요한 취소와 함께수업 타임아웃예.

취소와 함께 취소 신호를 생성하는 방법, 타임아웃 이 메서드는 일정 시간이 지나면 취소 신호를 생성합니다.

다음은 샘플 코드입니다.

package main

import (
    "context"
    "fmt"
    "time"
)

func main() {
    ctx := context.Background()

    // WithCancel returns a copy of parent with a new Done channel
    // and cancelfunc
    ctx, cancel := context.WithCancel(ctx)

    go func() {
        time.Sleep(2 * time.Second)

        // cancel the context
        cancel()
    }()

    fmt.Println("waiting for 5 seconds")
    select {
    case <-time.After(5 * time.Second):
        fmt.Println("waited for 5 seconds")
    case <-ctx.Done():
        fmt.Println(ctx.Err())
    }
}

위의 샘플 코드는 2초 후에 표시됩니다. 문맥취소

그런 다음 5초 동안 기다립니다. 기본 기능이 종료됩니다.

하지만 문맥취소되었습니다 기본 함수에서 빠져나와 오류 메시지를 인쇄합니다.

이것은 선택하다문을 통해 마무리

선택하다게이트는 여러 채널을 기다리다가 하나가 준비되면 해당 채널의 작업을 실행합니다.