[go] sync 패키지의 waitgroup 기능
Go 언어의 sync
패키지는 고루틴 간 동기화를 담당하는 패키지로, WaitGroup
도 그 중 하나입니다. WaitGroup
는 고루틴들이 모두 종료될 때까지 기다리는 기능을 제공합니다.
WaitGroup
을 사용한 예제
아래는 WaitGroup
을 사용하여 고루틴이 모두 종료되기를 기다리는 간단한 예제입니다.
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
wg.Add(2)
go func() {
defer wg.Done()
fmt.Println("첫 번째 고루틴")
}()
go func() {
defer wg.Done()
fmt.Println("두 번째 고루틴")
}()
wg.Wait()
fmt.Println("모든 고루틴이 종료됨")
}
위의 예제에서는 Add
메서드로 WaitGroup
카운트를 2로 설정하고, 두 개의 고루틴이 각각 Done
을 호출하여 종료되면 Wait
가 끝나고 “모든 고루틴이 종료됨” 메시지가 출력됩니다.
sync
패키지의 WaitGroup
을 사용하면 여러 고루틴의 작업이 모두 완료될 때까지 기다릴 수 있어, 병렬 처리 작업을 관리하는 데 유용합니다.
참고 자료
적용일자: 2021년 11월 30일