서론
Go 언어에서는 동시성 처리를 간편하게 할 수 있는 고루틴(goroutine)을 제공한다. 여러 고루틴을 동시에 실행하고 이들의 작업이 완료될 때까지 기다리는 문제는 sync.WaitGroup을 사용하여 해결할 수 있다. sync.WaitGroup은 여러 고루틴의 작업을 동기화하고 모든 고루틴이 작업을 완료할 때까지 대기하는 기능을 제공한다. 이를 통해 고루틴들이 완료될 때까지 기다리며 효율적인 병렬 처리를 할 수 있다.
예제
package main
import (
"fmt"
"sync"
)
func main() {
var wg sync.WaitGroup
for i := 0; i < 5; i++ {
wg.Add(1)
go func(n int) {
fmt.Println("Goroutine:", n)
wg.Done()
}(i)
}
wg.Wait()
fmt.Println("Finish 🏁")
}
메소드 설명
메소드 | 설명 |
sync.WaitGroup.Add(n int) | WaitGroup에 대기할 고루틴을 n만큼 추가한다. |
sync.WaitGroup.Done() | 고루틴 작업이 끝났음을 알린다. |
sync.WaitGroup.Wait() | 모든 고루틴이 완료될 때까지 대기한다. |
'Language > Go' 카테고리의 다른 글
[golang] 현재 운영 체제 확인하기 (0) | 2024.11.11 |
---|---|
[golang] iota 키워드로 열거형 상수 정의 (4) | 2024.11.10 |
[golang] html/template 패키지로 동적 페이지 처리하기 (3) | 2024.11.07 |
[golang] json.Marshal에서 HTML 이스케이프 문제 (3) | 2024.10.31 |
[golang] reflect 패키지를 사용한 외부 패키지의 private 필드 접근하기 (0) | 2024.10.30 |