- 멀티코어와 멀티프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 GCD 기술
→ 프로그래머가 실행할 테스크 (작업)을 생성하고 Dispatch Queue 에 추가하면, GCD 는 테스크 (작업)에 맞는 Thread 를 자동으로 생성해서 실행하고 작업이 종료되면 해당 Thread 를 종료한다.
( Dispatch Queue 의 종류 )
Operation Queue ( 연산 대기열 )
- Concurrent Dispatch Queue 와 동일하게 동작하며, Operation Queue 클래스에 의해 구현된다.
- Dispatch Queue 는 FIFO 순서로 작업을 실행한다
- 그러나 Operation Queue 는 꼭 FIFO 순서는 아니고, 다른 요인들이 함께 고려된다.
- Dispatch Queue 와 Operation Queue 는 매우 유사한 클래스
GCD & Operation Queue
차이점:
- Operation Queue 에서는 동시에 실행할 수 있는 Operation 의 최대 수를 지정 가능 (max)
- Operation Queue 에서는 KVO (Key Value Observing)을 사용할 수 있는 많은 property 가 있음
- Operation Queue 에서는 Operation 을 일시 중지, 다시 시작, 및 취소 가능!
언제 사용?
Operation Queue :
→ 비동기적으로 실행되어야 하는 작업을 객체 지향적인 방법으로 사용하는 데 적합함.
→ KVO 를 사용해 작업 진행 상황을 감시하는 방법이 필요할 때도 적합
Grand Central Dispatch :
→ 작업이 복잡하지 않고 간단하게 처리하거나 특정 유형의 시스템 이벤트를 비동기적으로 처리할 때 적합
→ ex. 타이머, 프로세스 등