- QoS: quality of service,우선순위를 정한다.
적절하게 QoS를 지정하면 앱의 에너지 효율이 좋아진다- userInteractive
메인 스레드에서 작업하거나 사용자 인터페이스를 새로 고치거나 애니메이션을 수행하는 등 사용자와 상호 작용하는 작업 (ex: 중요도 높고 즉각적인 방응이 요구되는 작업, 즉각적으로 작업이 처리) - userInitiated: 사용자가 시작한 작업으로 저장된 문서를 열거나 사용자가 사용자 인터페이스에서 무언가를 클릭 할 때 작업을 수행하는 등 즉각적인 결과가 필요할 때 사용, (ex: 빠른 결과를 기대할때 사용)
- default: 기본값
- utility: 완료하는데 시간이 조금 걸리고 데이터 다운로드 또는 가져오기와 같이 즉각적인 결과가 필요하지 않은 작업 (ex: 계산, I/O, 네트워킹등 시간이 다소 오래걸리는 작업)
- background: 인덱싱, 동기화 및 백업과 같이 백그라운드에서 작동하고 사용자에게 표시되지 않는 작업
(ex: 유저가 인지하지도 못하는 뒷단에서 실행되는 작업
- userInteractive
-
let dispatchGroup = DispatchGroup() let queue3 = DispatchQueue(label: "q3", qos: DispatchQoS.default) queue3.async(group: dispatchGroup){ dispatchGroup.enter()//작업시작 DispatchQueue.global().async { for index in 20..<30 { Thread.sleep(forTimeInterval: 0.3) print(index) } dispatchGroup.leave()//작업끝 이거 쓰지않으면 //끝난줄 모르기 때문에 dispatchGroup.notify(queue: DispatchQueue.main) 이 실행되지 않는다 } } dispatchGroup.notify(queue: DispatchQueue.main) { print("끝")
'앱 > iOS(Swift)' 카테고리의 다른 글
[iOS] scene delegate (0) | 2022.01.12 |
---|---|
[iOS] In-Active (0) | 2022.01.12 |
[스위프트] GCD API 동작 방식과 필요성 (0) | 2022.01.12 |
[스위프트] NSOperationQueue 와 GCD Queue 의 차이점 (0) | 2022.01.12 |
[스위프트] Bounds, Frame 차이점 (0) | 2022.01.12 |
댓글