시작하기에 앞서 GCD와 Dispatch Queue는 다른거라는 걸 알고 가자
GCD란?
- Grand Central Dispatch
- C기반의 저수준 API로 apple의 다중 스레드 프로그래밍을 위한 기술이다.
- GCD는 비동기적으로 작업을 수행할 수 있는 queue를 제공한다.
- GCD의 개념으로 동시성 프로그래밍을 지원하는 스위프트의 API, 즉 queue가 Dispatch Queue인 것이다.
Dispatch Queue란?
- 작업항목의 실행을 관리하는 클래스이다.
- 대기열에 추가된 작업항목은 시스템이 관리하는 스레드풀에서 처리하고 작업을 완료하면 스레드를 알아서 해제한다.
- 일반 스레드코드보다 쉽고 효율적으로 코드를 작성할 수 있다는 장점이 있다.
Dispatch Queue의 두가지 특성
Serial
- Dispatch Queue를 생성 시 기본으로 생성된다.
- 단일 스레드이다.
- 대기열에 등록한 순서대로 작업을 실행한다.
- 하나의 작업을 실행하고 끝날 때까지 대기열에 있는 다른 작업을 미루고 있다가 이전 작업이 끝나면 실행한다.
Concurrent
- 실행 중인 작업이 끝나기를 기다리지 않고 대기열에 있는 작업을 동시에 별도의 스레드를 사용하여 실행합니다.
- 즉, 병렬처리 방식이다.