DispatchQueue :
메인 스레드가 아닌 별도의 스레드에서 처리해준 후 결과 값만 메인 스레드로 넘겨주어 화면에 표시하도록 CPU를 관리할 수 있습니다.
DispatchQueue의 종류 : Seral / Concurrent
Seral (main 스레드) : 한 작업이 끝날 때 까지 대기. 순차적으로 진행하는 Queue형태
Concurrent (병렬 스레드) : 대기열에 있는 작업도 다른 스레드로 병렬로 처리하여 동시에 처리할 수 있게 합니다.
Qos를 주어 우선순위 지정 가능합니다. (링크 참고)
|
DispatchQueue.global(qos: .userInteractive) {} //Main Queue |
|
DispatchQueue.global(qos: .userInitiated) {} //유저가 시작한 작업, 유저가 응답을 기다림 |
|
DispatchQueue.global(qos: .default) {} //userInitiated와 utility의 중간 |
|
DispatchQueue.global(qos: .utility) {} //시간이 걸리며 즉각적인 응답이 필요하지 않은 경우 |
|
DispatchQueue.global(qos: .background) {} //눈에 보이지 않는 부분의 작업. 완료 시간 중요X |
|
DispatchQueue.global(qos: .unspecified) {} |
Sync : synchronously 동기
작업이 다 끝나야만 현재의 Queue에게 컨트롤을 넘깁니다. 즉 현재의 Queue는 block상태로 있고 끝나야 실행됩니다.
Async : Asynchronous 비동기
작업을 수행할 다른 Queue에게 작업을 넘김과 동시에 현재의 Queue에게 컨트롤을 돌려줍니다. 작업이 끝나기 전까지 기다릴 필요 없고 동기와 반대로 block상태가 되지 않습니다.
https://seons-dev.tistory.com/entry/Swift-DispatchQueue%EB%9E%80-GCD-Grand-Central-Dispatch
Swift : 기초문법 [DispatchQueue란?] (GCD : Grand Central Dispatch)
GCD 에 대해 알아보도록 합시다. DispatchQueue DispatchQueue 는 작업 항목의 실행을 관리하는 클래스입니다. DispatchQueue 는 장점은 일반 Thread 보다 쉽고 효율적으로 코드를 작성할 수 있습니다. 보통 서
seons-dev.tistory.com
'iOS' 카테고리의 다른 글
AVCapture Session (0) | 2022.10.17 |
---|---|
iOS ARKit LiDAR 에 대해 (0) | 2022.09.27 |
Pencil Kit (iPadOS) - 기초편 (0) | 2022.09.21 |
View Life Cycle (0) | 2022.09.06 |
Watch Connectivity (watchOS) (0) | 2022.07.31 |