[go] sync 패키지를 활용한 병렬 데이터 처리
본 블로그에서는 sync
패키지를 사용하여 병렬 데이터 처리를 하는 방법에 대해 알아보겠습니다. 또한, 예제 코드를 살펴봄으로써 이해를 돕겠습니다.
목차
1. sync 패키지 소개
Go 언어의 sync
패키지는 고루틴 간의 동기화 및 상호배제를 지원하기 위한 패키지입니다. 이를 통해 병렬 처리를 안전하게 수행할 수 있습니다.
sync
패키지는 다음과 같은 기능을 제공합니다:
- Mutex: 상호배제를 위한 뮤텍스 제공
- WaitGroup: 고루틴의 완료를 기다리는 기능
- 등
2. 병렬 데이터 처리 예제
아래는 sync
패키지를 사용하여 배열의 요소들을 병렬로 처리하는 간단한 예제 코드입니다.
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
data := []int{1, 2, 3, 4, 5}
for _, v := range data {
wg.Add(1)
go func(val int) {
defer wg.Done()
processData(val)
}(v)
}
wg.Wait()
fmt.Println("모든 데이터 처리 완료")
}
func processData(val int) {
// 데이터 처리 로직
fmt.Println("처리 중:", val)
}
위 코드에서 WaitGroup
을 사용하여 고루틴들의 작업이 모두 완료될 때까지 기다립니다. 이를 통해 안전하게 병렬 처리를 할 수 있습니다.
위 예제 코드를 실행하면, 배열의 각 요소가 고루틴을 통해 병렬로 처리되는 것을 확인할 수 있습니다.
이와 같은 방식으로 sync
패키지를 활용하여 안전하고 효과적인 병렬 데이터 처리를 구현할 수 있습니다.
본 블로그를 통해 sync
패키지를 사용한 병렬 데이터 처리에 대한 이해를 높일 수 있기를 바랍니다.