[go] sync 패키지에서의 병렬 처리 예시

병렬 처리를 위한 많은 방법 중 Go 언어의 sync 패키지는 고루틴 간의 동기화 및 병렬 처리를 위한 라이브러리이다. 이 패키지를 사용하여 병렬 처리를 쉽게 구현할 수 있다.

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("모든 작업 완료")
}

이 예시에서는 sync.WaitGroup을 사용하여 두 개의 고루틴을 병렬 처리하고 모든 고루틴이 완료될 때까지 기다린다. Add 메서드로 고루틴의 갯수를 추가하고, 각 고루틴에서 Done 메서드로 작업 완료를 알린다. Wait 메서드를 통해 모든 고루틴이 완료될 때까지 대기한다.

참고 자료