본문 바로가기
앱/iOS(Swift)

[스위프트] NSOperationQueue 와 GCD Queue 의 차이점

by 리드맥 2022. 1. 12.

ios에서 멀티 스레딩 을 위한 API: NSOperation, GCD
NSOperation은 GCD보다 약간의 오버헤드가 더 발생되고 느리지만 GCD는 직접 처리해야 하는 작업들을 지원 하고 있기 때문에 (KVO관찰(key-velue observer), 작업취소 등등) 감수하고 사용할만하다.

  • NSOperation: Obj-C 기반으로 만들어진 high-level API
    • NSOperationQueue
      • operation Queue에 추가된 작업은 작업이 완료될 때까지 대기열에 남아 있다. 작업이 추가된 후에는 대기열에서 직접 제거할 수 없기 때문에 모든 작업이 끝나지 않은 상태에서 Operation queue를 중지시키면 메모리 릭이 발생할 수 있다
      • 하이 레벨이기 때문에 GCD 에서할 수 없는기능(ex: 재개, 취소, 중지)을 제공하지만 구현이 복잡하고 무겁다
  • GCD(Grand Central Dispatch): C 기반의 low-level API
    • GCD Queue
      • 복잡하지않고 가볍기 때문에 매우 간단한 동시성을 사용할 수 있다

댓글