- 우선 순위?
- 무엇을 먼저 처리할까? 아님
- 무엇에 더 많은 에너지를 쏟을까? !!
- GCD에서 스레드 관리는 시스템이 해준다고 했음
- 시스템 → QoS 정보를 통해서 → 스케쥴링, CPU, I/O 처리량, 타이머 대기 시간 등의 우선순위를 조정
- DispatchQoS는 열거형 타입
- 총 6개의 QoS 클래스가 있으며 4개의 주요 타입과 다른 2개의 특수 타입으로 구분
- userInteractive > userInitiated > default > utility > background > unspecified
- 우선 순위가 높을 수 록 더 많은 전력을 소모함
- 그러므로 수행 작업에 적절한 QoS를 할당하면 앱이 더 반응적(responsive)이고 보다 효율적인 에너지 사용이 가능해짐
1️⃣ User-interactive
- main 스레드에서 작업됨
- 사용자 인터페이스 새로고침, 애니메이션 등 사용자와 상호작용하는 작업에 할당
- 작업이 빠르게 수행되지 않으면 유저 인터페이스는 멈추게 됨
- 반응성(responsiveness) & 성능(performance)에 중점을 둠
2️⃣ User-initiated
- 문서를 열거나 버튼을 클릭해 액션을 수행하는 것처럼 빠른 결과를 요구하는 유저와의 상호작용 작업에 할당
- 몇 초 이내의 짧은 시간 내에 수행해야하는 작업
- 반응성과 성능에 중점
3️⃣ Default
- QoS를 할당해 주지 않을 경우 기본값으로 사용
- User Initiate & Utility의 중간 레벨