GCD與NSOperation之間的區別
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
相關文章
- Oracle與OpenJDK之間的區別OracleJDK
- PrepareStatement與Statement之間的區別REST
- GCD NSOperation 執行緒安全GC執行緒
- PHP abstract與interface之間的區別PHP
- 還在用GCD?來看看 NSOperation 吧GC
- 雲與本地部署 ERP 之間的區別
- size resize與capacity reserve之間的區別
- iOS多執行緒程式設計——GCD與NSOperation總結iOS執行緒程式設計GC
- 深度學習與機器學習之間區別 - javaworld深度學習機器學習Java
- [譯]HTML attribute與DOM property之間的區別?HTML
- TCP、UDP、HTTP、SOCKET之間的區別與聯絡TCPUDPHTTP
- 陣列地址與指標之間的區別與聯絡陣列指標
- 大資料分析與機器學習之間的區別與聯絡大資料機器學習
- Java中Statement與PreparedStatement與CallableStatement之間的區別 - javarevisitedJava
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- Android Bitmap 與 Drawable之間的區別和轉換Android
- 敏捷和 Scrum 之間的區別敏捷Scrum
- Statement和PreparedStatement之間的區別
- 談談機器學習與傳統程式設計之間的區別機器學習程式設計
- QWidget體系與QGraphicsWidget體系之間的區別
- iOS多執行緒(Pthread、NSThread、GCD、NSOperation)iOS執行緒threadGC
- NSOperation的多執行緒使用以及和GCD的對比執行緒GC
- select、poll、epoll之間的區別
- @Bean和@Component之間的區別?Bean
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- JavaSE、JavaEE、JavaME之間的區別概述Java
- reboot和init 6之間的區別boot
- WCF、WebAPI、WCFREST、WebService之間的區別WebAPIREST
- iOS GCD執行緒之間的通訊iOSGC執行緒
- iOS多執行緒程式設計技術之NSThread、Cocoa NSOperation、GCDiOS執行緒程式設計threadGC
- 宏旺半導體解答ECC與RECC記憶體之間的區別記憶體
- 《西遊記》管理文化與六西格瑪管理文化之間的區別
- TCP協議與UDP協議以及兩者之間的區別TCP協議UDP
- WCF 服務應用程式與 服務庫之間的區別
- String、StringBuffer與StringBuilder之間區別UI
- ios多執行緒程式設計(NSThread)(NSOperation )(GCD)iOS執行緒程式設計threadGC
- querySelector和getElementById之間的區別