대기 그룹
대기그룹 -> 고루틴이 모두 끝날때까지 기다림
func main() {
runtime.GOMAXPROCS(runtime.NumCPU()) // 모든 CPU tkdyd
wg:= new(sync.WaitGroup) //대기그룹 생성
for i:=0; i<10; i++ {
wg.Add(1) // 반복할때마다 wg.Add함수로 1씩 추가
go func(n int) { //고루틴 10개 생성
fmt.Println(n)
wg.Done() //고루틴이 끝남을 알려줌
}(i)
}
wg.Wait() //고루틴이 끝날때까지 기다림
fmt.Println("the end")
}
Add함수와 Done 함수는 호출 횟수가 같아야함
Done 함수는 defer와 함께 사용하여 지연 호출로도 사용 가능