Swift에서 Grand Central Dispatch(GCD)를 사용하면 백그라운드에서 작업을 진행하거나 병렬로 실행될 코드를 지정할 수 있습니다. 이 기능을 사용하여 다양한 작업을 효율적으로 실행할 수 있습니다. 본 문서에서는 Swift에서 GCD를 사용해 작업을 그룹화하고 압축 실행하는 방법에 대해 알아보겠습니다.
1. 작업 그룹 만들기
GCD에서는 작업 그룹을 만들어 관련 작업들을 함께 묶을 수 있습니다. 작업 그룹을 만들기 위해 DispatchGroup
클래스를 사용합니다.
let taskGroup = DispatchGroup()
위의 예시에서 taskGroup
는 새로운 작업 그룹을 나타내며, 이제 그룹에 작업을 추가할 수 있습니다.
2. 작업 그룹에 작업 추가하기
작업 그룹에 작업을 추가하기 위해 enter()
메서드와 leave()
메서드를 사용합니다.
taskGroup.enter()
// 병렬로 실행될 작업
taskGroup.leave()
위의 예시에서 enter()
는 그룹에 새로운 작업이 추가되었음을 나타내고, leave()
는 해당 작업이 완료되었음을 나타냅니다.
3. 작업 그룹에서 압축 실행하기
작업 그룹에 모든 작업이 완료되면 특정 동작을 실행할 수 있습니다. 이를 위해 notify(queue:qos:flags:execute:)
메서드를 사용합니다.
taskGroup.notify(queue: .main) {
// 모든 작업이 완료된 후 실행될 코드
}
위의 예시에서 .main
은 압축 실행이 발생할 대상 큐를 의미합니다.
4. 예외 처리
작업 집합을 사용할 때 예외 처리는 굉장히 중요합니다. 만약 작업 그룹에서 작업을 추가한 후, 예외가 발생하면 leave()
가 호출되지 않아 계속해서 대기 상태에 있을 수 있습니다. 이를 방지하기 위해 leave()
는 defer
블록 내에 위치시켜 예외 여부에 상관없이 호출되도록 합니다.
위의 방법을 이용하면 작업을 그룹화하고 압축 실행하는 방법에 대해 간단히 살펴보았습니다.
더 자세한 내용은 Swift 공식 문서를 참고하시기 바랍니다.
DispatchGroup - Apple Developer Documentation
Grand Central Dispatch (GCD) - Apple Developer Documentation