- 여러 작업을 그룹에 추가하고 동일한 Queue 또는 다른 Queue에서 실행되도록 예약할 수 있음
- 그룹 내의 모든 작업이 실행 완료 후 completionHandler를 실행
- 그룹의 모든 작업이 실행 완료할 때까지 동기적(sync)으로 기다릴 수 있음
// 그룹 생성
let group = DispatchGroup()
// main Queue를 group에 추가
DispatchQueue.main.async(group: group){}
// group의 작업이 완료되었을 때 main Queue에 알림
group.notify(queue: DispatchQueue.main){}
참고
iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation-디스패치큐와 오퍼레이션큐의 이해