728x90
반응형
Goroutine
- Go 런타임이 관리하는 가상(논리) 쓰레드
- go 키워드로 고루틴 실행 가능
- 비동기적으로 함수 루틴을 수행하며, 동시 동작 수행에 사용됨
- OS 스레드보다 훨씬 가볍고, 생성할 때 비용이 적음
- OS 스레드는 1mb의 메모리 스택, goroutine은 kb 단위 (동적 증가 가능)
- 기본적으로 CPU 1개를 시분할하여 사용
다중 처리
- Go는 기본적으로 CPU 개를 사용한다
- 다중 병렬 처리를 위해 CPU를 여러개 사용하기 위해선 GOMAXPROCS로 증가시킬 수 있다.
runtime.GOMAXPROCS(4) // CPU 4개 사용
익명함수 (go func)
- 익명 함수 go func() {}() 으로 비동기 실행 가능
func main() {
var wait sync.WaitGroup // Go 루틴 대기열 두개 생성
wait.Add(2)
go func (parameter string) {
defer wait.Done()
//
} ("parameterValue")
wait.Wait() // Go 루틴 끝날 때 까지 대기
}
Graceful Shutdown
- Go 언어에서 여러 고루틴을 운영할 때 Graceful Shutdown 로직이 필요한 이유는, Go 애플리케이션이 종료 신호를 받았을 때 하위 고루틴들이 메인 고루틴보다 먼저 종료될 가능성이 있기 때문
- 쉽게 말하면, 작업 지시서이다
Context
- 동시성을 관리
- 여러 goroutine에 값을 전달
- 취소 신호 전파
- 분산 시스템 / 서비스 간의 상호 작용에서 아용
context.Background
- 모든 context 의 기본이 되는 빈 context 를 반환
- 대부분의 context 는 이를 기반으로 생성
context.TODO()
- 아직 구현되지 않은 부분을 나타내는 context 를 반환
728x90
반응형
'백엔드 Backend > Golang' 카테고리의 다른 글
[패키지] 오픈소스 패키지 발행 (0) | 2025.03.31 |
---|---|
[AUTH] Cookie를 이용한 검증 (0) | 2025.01.21 |
[CORS] CORS 설정 - 라이브러리 이용 (0) | 2025.01.20 |
[Golang] DB 쿼리 nullable 데이터 처리 (0) | 2025.01.10 |
[gRPC] Go 언어로 gRPC 사용해보기 (2) | 2024.12.24 |