GCD與NSOperation之間的區別

weixin_34007291發表於2018-05-08

GCD:

將任務(block)新增到佇列(序列/併發/主佇列),並且指定任務執行的函式(同步/非同步)
GCD是底層的C語言構成的API
iOS 4.0 推出的,針對多核處理器的併發技術
在佇列中執行的是由 block 構成的任務,這是一個輕量級的資料結構
要停止已經加入 queue 的 block 需要寫複雜的程式碼
需要通過 Barrier 或者同步任務設定任務之間的依賴關係
只能設定佇列的優先順序
高階功能:
一次性 once
延遲操作 after
排程組

NSOperation:

核心概念:把操作(非同步)新增到佇列(全域性的併發佇列)
OC 框架,更加物件導向,是對 GCD 的封裝
iOS 2.0 推出的,蘋果推出 GCD 之後,對 NSOperation 的底層全部重寫
Operation作為一個物件,為我們提供了更多的選擇
可以隨時取消已經設定要準備執行的任務,已經執行的除外
可以跨佇列設定操作的依賴關係
可以設定佇列中每一個操作的優先順序
高階功能:
最大操作併發數(GCD不好做)
繼續/暫停/全部取消
跨佇列設定操作的依賴關係

附:很好的demo連結 https://blog.csdn.net/sunnyboy9/article/details/19848031

相關文章