❓메인 큐 - DispatchQueue.main
- 메인큐 = 메인쓰레드
- 직렬로 작동한다.
기본적으로 실행하는 코드는 직렬 + 동기적으로 실행된다.
일반적으로 사용하는 print("123456") 이란 코드는 아래와 같은 의미가 숨겨져 있다.
DispatchQueue.main.sync{
print("123456"
}
❓글로벌 큐 - DispatchQueue.global()
DispatchQueue.global().async{
}
- 글로벌큐 중 디폴트
- 기본적으로 동시(Concurrent)큐
- 여러개의 쓰레드를 사용한다.
- QoS에 따라서 여러개로 나뉜다. ex) DispatchQueue.global(qos: .utility)
❓QoS (Quality of Service)
- 서비스의 품질에 따라서 나뉜다.
- 서비스의 품질이 높으면 높을수록 여러개의 쓰레드를 사용한다.
- iOS가 알아서 우선적으로 중요한 일을 인지하고 쓰레드에 우선순위를 매겨 더 많은 쓰레드를 사용하고, 배터리를 집중적으로 사용해서 더 순위가 높은 큐의 작업들을 더 빨리 끝내도록 하는 개념
디폴트 큐가 쓰레드를 4개 쓰면 utility큐는 2개를 사용하는 것처럼 순위가 높은 큐가 더 많은 쓰레드를 사용한다.
❓프라이빗(Custom)큐 - DispatchQueue(label: "...")
- 커스텀으로 만드는 큐
- 기본 설정: 직렬(Serial)
- 동시큐로도 선언할 수 있다.
- 직렬이므로 하나의 쓰레드를 사용한다.
- Qos 설정가능
DispatchQueue(label: "customQueue") // Serial직렬큐
DispatchQueue(label: "customQueue", attributes: .concurrent) //동시(Concurrency)큐