Go Routine
Reference: Go by example, A Tour of Go, 예제로 배우는 Go 프로그래밍
What is Go routines?
Go runtime이 관리하는 Lightweight thread
Go에서 "go" keyword를 사용하여 함수를 호출하면, runtime 시 새로운
goroutine
을 실행한다goroutine
은 비동기적(asynchronously) 으로 함수 routine을 실행하기 때문에 여러 code를 동시에 (concurrently) 실행하는데 사용된다
Why Go routine?
OS Thread 보다 훨씬 가볍게 비동기 concurrent 처리를 구현하기 위하여 만든 것으로, 기본적으로 Go runtime이 자체 관리한다
Go runtime
상에서 관리되는 작업 단위인 여러goroutine
들은 하나의 OS Thread로 실행된다즉, goroutine들은 OS Thrad와 1:1로 대응되지 않고, multiplexing으로 훨씬 적은 OS Thread를 사용한다
Memory 측면에서도 OS Thread가 1MB의 stack을 갖는 반면, goroutine은 이보다 훨씬 작은 몇 KB의 stack을 갖는다
Go runtime
은 goroutine을 관리하면서 Go channel을 통해 goroutine 간의 통신을 쉽게 할 수 있도록 한다
ex)
Last updated
Was this helpful?