쿼카러버의 기술 블로그

[golang] 고루틴(go routine)이란? - 1탄 간단한 소개 본문

[Golang]

[golang] 고루틴(go routine)이란? - 1탄 간단한 소개

quokkalover 2021. 8. 1. 23:34

공식 도큐먼트에 따르면 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 - 

 

Comments