상위 문서: Go(프로그래밍 언어)
Goroutine
1. 개요
고루틴은 Go 언어에서 제공하는 동시성 제어 패러다임으로, OS의 스레드를 Go 언어 런타임에서 구현한 경량 스레드의 일종이다.2. 상세
고루틴은 Go 언어의 대표적인 특징으로 OS 스레드와 동일한 동시성 프로그래밍의 이점을 누릴 수 있으면서 동일 환경에서 OS 스레드 대비 계산량, 메모리 사용 효율 측면에서 이점이 존재한다. 이런 이점이 존재하는 이유는 다음과 같다.- Go 언어 런타임에서 스케줄링 되므로 문맥 교환(Context Switching)에서 커널 스페이스로 이동하는 오버헤드 방지.
- 채널(Channel)[1] 구현체를 통해 일반적으로 lock 대비 효율적인 데이터 전달 가능.
- 스레드 간 약 8 KiB의 경량화된 스택 사이즈로 할당.
[1] Communicating sequential processes(CSP)로 구현된 thread-safe로 동작하는 Worker unit간의 데이터 전달 구현