티스토리 뷰
GCD (Grand Central Dispatch) - DispatchQueue란?
앱의 기본 스레드 또는 백그라운드 스레드에서 작업 실행을 직렬 또는 동시에 관리하는 개체.
정의
class DispatchQueue: DispatchObject
- 디스패치 큐는 애플리케이션이 블록 객체 형태로 작업을 제출할 수있는 FIFO 큐이다.
- 디스패치 큐는 작업을 직렬 또는 동시에 실행합니다.
- 디스패치 큐에 올라온 작업은 시스템에서 관리하는 스레드 풀에서 실행됩니다.
- 앱의 기본 스레드를 나타내는 디스패치 큐를 제외하고 시스템은 작업을 실행하는 데 사용하는 스레드에 대해 보장하지 않습니다.
- 작업 항목을 동기 또는 비동기 적으로 예약할 수 있습니다.
- 작업 항목을 동기적으로 예약하면 해당 항목이 실행을 마칠 때까지 코드가 대기합니다.
- 작업 항목을 비동기 적으로 예약하면 작업 항목이 다른 곳에서 실행되는 동안 코드가 계속 실행됩니다.
- 메인 큐에서 작업의 동기적 실행을 시도하면 교착상태가 발생합니다.
Serial Queue
- 동시에 1개의 작업만 수행한다.
- 작업을 언제 수행하는지는 GCD에서 제어한다.
- 하나의 작업이 끝나고 다음 작업을 시작하기까지 걸리는 시간을 우리는 알 수 없다.
Concurrent Queue
- 동시에 여러 작업을 수행할 수 있다.
- 큐에 추가된 순서대로 작업이 시작되도록 보장한다.
- 작업은 시작 순서에 상관없이 완료될 수 있다.
- 다음 작업을 시작하는 데 걸리는 시간이나, 현재 실행중인 작업에 수에 대해서는 알 수 없다.
< GCD에서 제공하는 Queue의 종류 >
Main Queue
- 메인 스레드에서 실행되는 Serial Queue.
Global Queue
- 전체 시스템이 공유하는 Concurrent Queue
- 우선 순위가 서로 다른 4개의 Queue가 있음.
- high, default, low, background
Custom Queue
- Serial 또는 Concurrent 모두 가능한 Queue.
- 이 작업은 실제로 Global Queue에서 끝남.
< Sync (Synchronous) / Async (Asynchronous) >
Sync
- 작업이 완료된 후에 Queue에게 제어권을 넘김.
- 작업이 끝나기 전까지 Queue가 block되어 진행중인 작업이 끝날 때까지 기다려야함.
Async
- 작업을 수행할 다른 Queue에게 작업을 넘기자마자, 현재 Queue에게 제어권을 돌려줌.
- 작업이 끝날때까지 기다리지 않으며, 현재의 Queue도 block되지 않음.
- 참고
developer.apple.com/documentation/dispatch/dispatchqueue/
https://www.raywenderlich.com/5370-grand-central-dispatch-tutorial-for-swift-4-part-1-2
'iOS > iOS 개발' 카테고리의 다른 글
iOS - BlendShapes 활용하기 (0) | 2021.05.27 |
---|---|
ARKit - BlendShapes (0) | 2021.05.25 |
iOS ActionSheet 만들기 (0) | 2021.01.14 |
iOS앱 Lottie 애니메이션 구현하기 (0) | 2020.11.29 |
XCODE프로젝트에 코코아팟(CocoaPods) 설치하기 (0) | 2020.11.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Neo4j
- rxswift
- Swift unowned
- C++
- ios
- cocoapods
- 백준
- Swift weak
- disposeBag
- 프로그래머스
- boj
- GraphDB
- DispatchQueue
- Kotlin
- 백준온라인저지
- infallible
- blendshape
- ARKit
- coreml
- Lottie
- SwiftUI
- Swift
- 안드로이드
- 카카오인턴십
- SWEA
- 코코아팟
- 알고리즘
- rxswift6
- blendshapes
- Reactivex
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함