[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
메서드를 통해 모든 고루틴이 완료될 때까지 대기한다.