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