[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일