반응형

NSOperationQueue와 GCD(Grand Central Dispatch) Queue는 모두 다중 스레딩 및 병렬 처리를 지원하기 위한 API입니다. 

 

  • 객체 지향 vs. 절차 지향:
    NSOperationQueue는 NSOperation 객체를 사용하여 작업을 표현하고 관리합니다. NSOperation은 추상적인 작업을 나타내는 객체로서 상태 및 종속성을 가질 수 있습니다. 이는 객체 지향적인 접근 방식이며, 작업 간의 의존성을 선언하고 작업을 취소하거나 일시 중지하는 등의 고급 기능을 제공합니다.
    GCD Queue는 절차적인 접근 방식으로서 블록(Blocks)을 사용하여 작업을 표현합니다. GCD는 블록 단위로 작업을 처리하며, 작업 간의 명시적인 종속성을 선언할 수는 없습니다.
  • 우선 순위 지정:
    NSOperationQueue는 작업에 대한 상대적인 우선 순위를 설정할 수 있습니다. 우선 순위를 사용하여 작업이 스케줄링되는 순서를 제어할 수 있습니다.
    GCD Queue는 QoS(Quality of Service)를 사용하여 작업에 우선 순위를 할당합니다. QoS를 통해 작업의 중요도를 지정하고 시스템은 이를 고려하여 작업을 스케줄링합니다.
  • 작업의 취소 및 일시 중지:
    NSOperationQueue는 작업을 취소하거나 일시 중지할 수 있는 기능을 내장하고 있습니다. NSOperation 객체의 상태를 관리하여 작업을 중지하고 재개할 수 있습니다.
    GCD Queue에서는 작업을 직접 취소하거나 일시 중지하기 어렵습니다. 일부 작업을 취소하기 위해서는 작업의 실행 여부를 확인하고 조건부로 코드를 작성해야 할 수 있습니다.
  • 유연성과 추상화:
    NSOperationQueue는 작업을 객체로 표현하기 때문에 작업 간의 복잡한 종속성, 작업의 상태 및 진행률 추적 등과 같은 고급 기능을 제공합니다. 또한 KVO(Key-Value Observing)를 통해 작업의 상태 변화를 감지할 수 있습니다.
    GCD Queue는 단순하고 경량화된 API로서 일반적인 병렬
반응형
Posted by 까칠코더
,