한번에 여러 작업을 동시에 수행하는 것을 목표로 하는 프로그래밍 방식
GCD는 iOS에서 제공하는 동시성프로그래밍을 쉽게 처리하기 위한 도구 중 하나Queue에 추가하면 OS가 적절한 Thread에게 일을 할당하여 처리DispatchQueue를 사용하여 여러 개의 쓰레드에 업무를 분담 시킬 수 있다DispatchQueue는 주로 2가지 큐를 제공하며 Main Queue, Global Queue로 구성Serial Queue(직렬큐)라고 불립니다.DispatchQueue.main.async {
// 작업
}
들어온 여러가지 작업을 동시에 처리할 수 있어 Concurrent Queue(병렬큐)라고도 불림
Global Queue에 할 일을 추가하면 OS는 여러 개의 쓰레드 분할 처리Quality of Service(QoS)를 설정 가능.userInteractive.userInitiated.default.utility.background.unspecifiedDispatchQueue.global(qos: .background).async {
// 사용자에게 보이지 않거나 중요하지 않은 작업
}
async vs sync각각의 Queue에는 동기 또는 비동기적으로 작업을 할당 가능
sync (동기)import UIKit
DispatchQueue.main.sync {
print("Hello")
}
print("world")
// sync의 작업이 끝나기전에 print("world")가 호출되지 않음
// "Hello" "World"가 출력됨
async(비동기)