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