이전글에 이어서, GCD에 대해 좀더 자세히 알아보도록 하겠습니다.
DispatchQuere
Dispatch Queue는 작업을 순차적으로 처리할지, 병렬로 처리할지를 고를 수 있습니다.
순서대로 작업을 처리하는 Serial Queue, 동시에 병렬을 수행하는 Concurrent Queue가 있습니다.
여기서, 직렬로 처리할꺼면 스레드를 왜 사용하나요? 라는 궁금증이 들 수도 있는데,
여기서 다루는 작업의 직렬성 병렬성은 큐 단위임을 명심하면 헷갈리지 않을 수 있다.
1.Serial Queue : MainQueue, CustomQueue
MainQueue는 MainThread에서 처리됩니다. 예를들면 스마트폰의 UI제어가 있겠네요.
이게 또 android와 다른 점인데, android는 UI를 애초에 스레드에서 핸들링이 불가능합니다.
대신 핸들러라는 별도의 인터페이스를 사용해 데이터를 주고받을 뿐 입니다.
자세하게 설명하면 글이 엄청 길어지기 때문에 링크로 대신하겠습니다.
2.Concurrent Queue : Global Queue, CustomQueue
Global Queue는 전체 시스템에 공유됩니다.
Global Queue는 파라미터로 QoS(Quality of Service)를 받는데요,
이는 병렬작업시 우선순위를 정해주는 역할을 합니다.
3. QoS(Quality of Service)
우선순위는 다음과 같습니다.
Userinteractive, UserInitiated, Default, Uility, Background
1순위인 Userinteractive로 갈수록 즉각적인 반응이 필요한 가벼운 작업을,
Background 로 갈수록 길고 오래걸리는 무거운 작업이나 사용자가 인지할 필요가 없는
작업을 시행하면 되겠죠? ㅎ
다음글은 제가 터미널에서 프로젝트를 진행중이기 때문에 Main Queue는 건드릴 일이 없으니,
Global Queue에 대해서 좀더 자세히 다뤄보도록 하겠습니다.
'Language > Swift' 카테고리의 다른 글
Swift GCD(Grand Central Dispatch) [4] - RunLoop 실행과 종료 (0) | 2021.03.23 |
---|---|
Swift GCD(Grand Central Dispatch) [3] - 예제 사용해보기 (0) | 2021.03.22 |
Swift GCD(Grand Central Dispatch) [1] - 멀티스레딩 기초 (0) | 2021.03.22 |
Swift 서브스크립트 (Subscripts) (0) | 2021.03.21 |
Swift 제네릭 (Generic) (0) | 2021.03.19 |