[iOS] Grand Central Dispatch (GCD)
Grand Central Dispatch
멀티코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술
스레드 풀의 관리를 프로그래머가 아닌 운영체제에서 관리
➡️ 프로그래머가 작업(task)를 비동기적으로 쉽게 사용할 수 있음
프로그래머가 실행할 작업을 생성하고, Dispatch Queue에 추가하면 GCD는 작업에 맞는 스레드를 자동으로 생성해서 실행하고,
작업이 종료되면 해당 스레드를 제거해 줌
DispatchQueue
작업을 연속적 / 동시에 진행하기는 하지만, 언제나 FIFO로 실행됨
Serial Dispatch Queue : 한 번에 하나의 작업만을 실행
➡️ 해당 작업이 queue에서 제외되고 새로운 작업이 시작되기 전까지 기다림
Concurrent Dispatch Queue : 가능한 많은 작업을 진행
➡️ 이미 시작된 작업이 완료될 때까지 기다리지 않음
OperationQueue 와의 차이점?
Concurrent Dispatch Queue와 동일하게 동작하며, Operation Queue 클래스에 의해 구현됨
1. Dispatch Queue는 FIFO로 작업을 실행하지만, Operation Queue는 실행 순서를 결정할 때 다른 요인들을 고려함
2. Operation Queue에서는 동시에 실행할 수 있는 Operation의 최대 수를 지정할 수 있음
3. Operation Queue에는 KVO (Key Value Observing)을 사용할 수 있는 많은 프로퍼티들이 존재
4. Operation Queue에서는 Operation 일시 중지, 재시작, 취소 가능
어떤 상황에 적합할까?
Operation Queue
비동기적으로 실행되어야 하는 작업을 객체 지향적인 방법으로 사용할 때
KVO를 사용해 작업 진행 상황을 감시하는 방법이 필요할 때 -> DispatchQueue와 다르게, 취소 작업이 가능함
GCD
작업이 복잡하지 않고 간단하게 처리할 때
특정 유형의 시스템 이벤트를 비동기적으로 처리할 때
ex. 타이머, 프로세스와 관련된 이벤트
KVO ?
[LECTURE] 1) Grand Central Dispatch란? : edwith
Grand Central Dispatch란? 멀티코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 GCD기술에 대해 알아봅니다. 학습 목표 1. Gr... - 부스트코스
www.edwith.org