쿼카러버의 기술 블로그
[golang] 고루틴(go routine)이란? - 1탄 간단한 소개 본문
공식 도큐먼트에 따르면 Go routine의 정의는 다음과 같다
“A goroutine is a lightweight thread of execution”.
고루틴은 thread보다 더 가볍고, 따라서 thread를 관리하는 것보다 더 자원효율적(less resource intensive)이다.
다음 코드를 goplayground에서 실행해보자.
Playground: https://play.golang.org/p/-TDMgnkJRY6
package main
import "fmt"
//function to print hello
func printHello() {
fmt.Println("Hello from printHello")
}
func main() {
//inline goroutine. Define a function inline and then call it.
go func(){fmt.Println("Hello inline")}()
//call a function as goroutine
go printHello()
fmt.Println("Hello from main")
}
위 프로그램을 해석하면
- Hello inline (by func inline)
- Hello from printHello (by func printHello)
- Hello from main (by main)
총 3가지 출력이 가능해야 하지만
실제로 실행시켜보면
Hello from main만 실행된다.
이는 각각 함수가 실행돼야 하지만 main함수가 Hello from main을 실행하는 즉시 종료돼서 그렇다.
다른 고 루틴의 함수들이 실행되는걸 보장하기 위해서는 channel, waitgroup 등을 사용할 수 있다.
다음 글
1. channel -
'[Golang]' 카테고리의 다른 글
[golang] Marshal, Unmarshal 차이 (0) | 2021.08.09 |
---|---|
[golang] string pointer는 언제쓸까? (0) | 2021.08.09 |
[golang] Closure(클로저)란? (0) | 2021.08.02 |
[golang] 콘텍스트 (context)란? - 1탄 간략한 소개 (4) | 2021.08.01 |
[golang] 채널 (channel)이란? - 1탄 간단한 소개 (0) | 2021.08.01 |
Comments