고루틴
덤프버전 : (♥ 1)
![파일:나무위키+상위문서.png](http://obj-sg.the1.wiki/d/82/8a/0bb4602568cf2876f4e245107c482e7872ef091d5e44bbef84992a5b4c06186a.png)
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간의 데이터 전달 구현