상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - Go 언어의 `context` 패키지는 어떤 용도로 사용되나요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
Go 언어의 `context` 패키지는 주로 <a href='https://sangseek.com/sangseeks/고루틴/ko'>고루틴</a>(goroutine) 간의 작업 취소, 데드라인 설정, 그리고 요청 범위의 값을 전달하는 데 사용됩니다. 이 패키지는 특히 네트워크 요청, 데이터베이스 쿼리, 또는 다른 비동기 작업을 수행할 때 유용합니다. `context` 패키지를 사용하면 여러 고루틴이 서로 협력하여 작업을 관리하고, 필요할 때 작업을 중단할 수 있는 방법을 제공합니다. 주요 기능 1. 작업 취소 : `context` 패키지는 작업을 취소할 수 있는 메커니즘을 제공합니다. 예를 들어, HTTP 요청을 처리하는 동안 클라이언트가 연결을 끊으면, 서버는 해당 요청을 처리하는 고루틴을 취소할 수 있습니다. 이를 통해 불필요한 리소스 소모를 줄일 수 있습니다. 2. 데드라인 설정 : `context`는 특정 시간 이후에 작업이 자동으로 취소되도록 설정할 수 있는 기능을 제공합니다. 이를 통해 작업이 너무 오래 걸리는 경우에 대한 안전 장치를 마련할 수 있습니다. 3. 값 전달 : `context`는 요청 범위의 값을 전달하는 데 사용될 수 있습니다. 예를 들어, <a href='https://sangseek.com/sangseeks/인증 정보/ko'>인증 정보</a>나 요청 ID와 같은 데이터를 여러 고루틴 간에 안전하게 공유할 수 있습니다. 사용 예시 `context` 패키지를 사용하는 기본적인 예시는 다음과 같습니다: ```go package main import ( "context" "fmt" "time" ) func main() { // 부모 컨<a href='https://sangseek.com/sangseeks/텍스트/ko'>텍스트</a> 생성 ctx, cancel := context.WithCancel(<a href='https://sangseek.com/sangseeks/context.Background()/ko'>context.Background()</a>()) defer cancel() // main 함수가 끝나면 cancel 호출 go func() { // 2초 후에 취소 time.Sleep(2 * time.Second) cancel() }() // 작업 수행 select { case <-time.After(5 * time.Second): fmt.Println("작업 완료") case <-ctx.Done(): fmt.Println("작업 취소:", ctx.Err()) } } ``` 위의 예제에서, `context.WithCancel`을 사용하여 취소 가능한 컨텍스트를 생성하고, 별도의 고루틴에서 2초 후에 취소를 호출합니다. 메인 고루틴은 5초 후에 완료되도록 설정되어 있지만, 2초 후에 취소가 발생하면 "작업 취소" 메시지가 출력됩니다. 컨텍스트의 종류 `context` 패키지에는 여러 종류의 컨<a href='https://sangseek.com/sangseeks/텍스트 생성/ko'>텍스트 생성</a> 함수가 있습니다: - `context.Background()`: 최상위 컨텍스트로, 일반적으로 프로그램의 시작점에서 사용됩니다. - `<a href='https://sangseek.com/sangseeks/context.TODO()/ko'>context.TODO()</a>()`: 아직 어떤 컨텍스트를 사용할지 결정하지 못한 경우에 사용됩니다. - `context.WithCancel(parent)`: 취소 가능한 컨텍스트를 생성합니다. - `context.WithDeadline(parent, deadline)`: 특정 시간에 만료되는 컨텍스트를 생성합니다. - `context.WithTimeout(parent, timeout)`: 주어진 시간 후에 만료되는 컨텍스트를 생성합니다. - `context.WithValue(parent, key, value)`: 요청 범위의 값을 저장할 수 있는 컨텍스트를 생성합니다. 주의사항 - 컨텍스트는 요청 범위의 데이터를 전달하는 데 사용되지만, 너무 많은 데이터를 저장하는 것은 피해야 합니다. 컨텍스트는 주로 요청의 메타데이터를 전달하는 데 사용되어야 하며, 큰 데이터 <a href='https://sangseek.com/sangseeks/구조체/ko'>구조체</a>를 저장하는 용도로는 적합하지 않습니다. - 컨텍스트는 불변(<a href='https://sangseek.com/sangseeks/immutable/ko'>immutable</a>)입니다. 즉, 한 번 생성된 컨텍스트는 변경할 수 없으며, 새로운 값을 추가하거나 취소할 때는 항상 새로운 컨텍스트를 생성해야 합니다. 결론 Go 언어의 `context` 패키지는 비동기 프로그래밍에서 중요한 역할을 하며, 고루틴 간의 협력과 작업 관리를 용이하게 합니다. 이를 통해 개발자는 더 안전하고 효율적인 코드를 작성할 수 있으며, 복잡한 시스템에서의 <a href='https://sangseek.com/sangseeks/작업 흐름/ko'>작업 흐름</a>을 효과적으로 관리할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기