본문 바로가기

iOS

[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