[swift] DispatchQueue를 사용한 작업 스케줄링
DispatchQueue는 Swift에서 비동기 작업을 스케줄링하는 데 사용되는 핵심 클래스입니다. 이를 사용하면 작업을 백그라운드 스레드에서 실행하거나 특정 시간이 지난 후에 실행하도록 예약할 수 있습니다.
1. DispatchQueue 기본 사용법
DispatchQueue를 사용하여 작업을 예약하려면 다음과 같이합니다:
// 특정 작업을 백그라운드 스레드에서 실행
DispatchQueue.global().async {
// 백그라운드 작업 실행
}
// 특정 시간 이후에 메인 스레드에서 실행
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
// 2초 후에 메인 스레드에서 실행
}
2. 작업 그룹화하기
여러 작업을 그룹화하여 공통된 작업이 완료될 때까지 기다리고자 할 때 DispatchGroup
을 사용할 수 있습니다.
let group = DispatchGroup()
group.enter()
DispatchQueue.global().async {
// 비동기 작업 실행
group.leave()
}
// 모든 작업이 완료될 때까지 기다림
group.notify(queue: DispatchQueue.main) {
// 모든 작업 완료 후 실행
}
3. 직렬 및 동시 작업
DispatchQueue
의 serial()
및 concurrent()
메서드를 사용하여 직렬 또는 동시 작업을 생성할 수 있습니다.
// 직렬 작업 큐 생성
let serialQueue = DispatchQueue(label: "com.example.serialQueue")
// 동시 작업 큐 생성
let concurrentQueue = DispatchQueue(label: "com.example.concurrentQueue", attributes: .concurrent)
요약
DispatchQueue를 사용하면 Swift 애플리케이션에서 작업을 쉽게 스케줄링할 수 있습니다. 백그라운드에서 비동기적으로 실행하거나 특정 시간 이후에 실행하는 등 다양한 작업 스케줄링이 가능합니다.
참고: Apple - Grand Central Dispatch
이상입니다. 부족한 부분이 있으면 언제든지 말씀해주세요!