Grand Central Dispatch

Jamezz Dev·2020년 9월 2일
0

ios 프로그래밍

목록 보기
10/10

Grand Central Dispatch(GCD)

  • 멀티코어와 멀티 프로세싱 환경에서 최적화된 프로그래밍을 할 수 있도록 애플이 개발한 기술이다
  • 스레드 풀의 관리를 개발자가 아닌 운영체제에서 관리하기에 태스크를 비동기적으로 쉽게 사용이 가능하다.
  • 개발자가 실행할 task 를 생성하고 dispatch Queue에 추가하면 GCD 는 태스크에 맞는 스레드를 자동으로 생성하여 실행하고 작업이 끝나면 해당 스레드를 제거합니다

Dispatch Queue (디스패치 대기열)

  • 작업을 연속적 또는 동시에 진행하기는 하지만 먼저 들어온 작업이 먼저 나가는 순서로 실행된다.

Serial Dispatch Queue

  • 한번에 하나의 작업만을 실행하며, 해당 작업이 대기열에서 제외되고 새로운 작업이 실행될때까지 기다린다.

Concurrent Dispatch Queue

  • 이미 시작된 작업이 완료될 때까지 기다리지 않고 가능한 많은 작업ㅇ르 진행한다.

Dispatch Source

  • 특정 유형의 시스템 이벤트를 비동기적으로 처리하기 위한 c기반 메커니즘이다.
  • 특정 유형의 이벤트에 대한 정보를 캡슐화 하고, 해당 이벤트가 발생할때마다 , 특정 클로저 , 객체 , 기능을 디스패치 대기열에 전달한다

Operation Queue 연산대기열

  • concurrent dispatch queue와 동일하게 동작하며, operation Queue에 의해 구현된다.
  • Dispatch Queue는 FIFO로 작업 실행하지만 연산대기열은 작업의 순서를 결정할때 다른 요인들을 고려한다.
  • Dispatch Queue 는 Operation Queue 와 매우 유사한 클래스이다.

Dispatch Queue vs Operation Queue

  • Operation Queue는 동시에 실행할수 있는 연산의 최대 수를 지정할 수 있다.
  • KVO(Key Value Observing)을 사용할 수 있는 많은 프로퍼티들이 있다.
  • 연산을 일시중지, 다시시작, 취소를 할 수 있다.

Operation Queue : 비동기적으로 실행해야 하는 작업을 객체 지향적인 방법으로 사용하는데 적합, KVO를 이용 작업 진행 상황을 감시하는 방법이 필요할 때도 적합
GCD : 작업이 복잡하지 않고 간단하게 처리하거나 특정 유형의 시스템 이벤트를 비동기적으로 처리할때 적합하다 ex) 타이머, 프로세스 등 관련 이벤트

profile
💻디지털 노마드를 🚀꿈꾸는 🇯🇲자메즈 🐥개발자 입니다.

0개의 댓글