ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 고루틴(goroutine)
    Golang 2022. 7. 12. 17:02

    goroutine

    • Go 프로그램 안에서 동시에 독립적으로 실행되는 흐름의 단위로, 스레드와 비슷한 개념
    • 다음과 같이 go 키워드로 함수를 실행하면 새 고루틴이 만들어진다.
    go f(x, y)
    • 예제
    package main
     
    import (
        "fmt"
        "time"
    )
     
    func main() {
        fmt.Println("main 함수 시작", time.Now())
        
        go long()
        go short()
         
        time.Sleep(5 * time.Second) // 5초 대기
        fmt.Println("main 함수 종료", time.Now())
    }
     
    func long() {
        fmt.Println("long 함수 시작", time.Now())
        time.Sleep(3 * time.Second) // 3초 대기
        fmt.Println("long 함수 종료", time.Now())
    }
     
    func short() {
        fmt.Println("short 함수 시작", time.Now())
        time.Sleep(1 * time.Second) // 1초 대기
        fmt.Println("short 함수 종료", time.Now())
    }
    
    
    실행 결과
    
    main 함수 시작 2009-11-10 23:00:00 +0000 UTC
    long 함수 시작 2009-11-10 23:00:00 +0000 UTC
    short 함수 시작 2009-11-10 23:00:00 +0000 UTC
    short 함수 종료 2009-11-10 23:00:01 +0000 UTC
    long 함수 종료 2009-11-10 23:00:03 +0000 UTC
    main 함수 종료 2009-11-10 23:00:05 +0000 UTC

    사용시 주의사항

    • 실행 중인 고루틴이 있어도 메인 함수가 종료되면 프로그램이 종료된다.
      • 아직 실행 중인 고루틴이 있다면 메인 함수가 종료되지 않게 해야 한다.
      • 고루틴의 종료상황을 확인할 수 있는 채널을 만들고, 만든 채널을 통해 종료 메시지를 대기시키는 방법을 추천

    'Golang' 카테고리의 다른 글

    Go 함수 파라미터 유동적으로 사용하기  (0) 2023.09.08
    Golang 실행 시간 측정  (0) 2022.07.28
    Command Line Argument  (0) 2022.07.25
Designed by Tistory.