반응형
# 배경
고루틴이 끝나지도 않았는데 main 함수가 종료가 된다.
# 해결방법
main은 고루틴이 끝났는지 알 수 없다. 그래서 WaitGroup 사용해야한다.
# 예시
func Add() {
sum := 1 + 2
fmt.Printf("합계 : %d \n", sum)
}
func GoroutineSolution() {
fmt.Println("Goroutine 시작")
var wg sync.WaitGroup
wg.Add(1)
go func() {
Add()
wg.Done()
}()
wg.Wait()
fmt.Println("Goroutine 끝")
}
wg.Add(1)
해서 wg가 1이라고 생각하자. 고루틴이 다 끝나면 wg.Done()
를 한다. 이건 -1이라고 생각하면 된다.wg.Wait()
는 0이 될 때까지 기다리고 있다. 즉 0이 되면 고루틴이 끝난 것이다. 그 후 다음 코드를 실행 시킨다.
# 참조
https://github.com/YooGenie/go-study/issues/54
반응형
'Study > Go 언어' 카테고리의 다른 글
[golang] context 역할 및 종류 (0) | 2022.10.12 |
---|---|
[golang] 고루틴 주의 사항 (2) | 2022.10.11 |
[golang] 고루틴(goroutine) 기본 문법 (0) | 2022.10.09 |
[golang] 채널(channel) blocking 해결 방법 (0) | 2022.10.07 |
[golang] 채널(channel)에서 주의할 점 (0) | 2022.10.06 |