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
- iOS多執行緒(Pthread、NSThread、GCD、NSOperation)iOS執行緒threadGC
- 雲與本地部署 ERP 之間的區別
- Java中Statement與PreparedStatement與CallableStatement之間的區別 - javarevisitedJava
- 簡單介紹HTTP與HTTPS之間的區別HTTP
- 陣列地址與指標之間的區別與聯絡陣列指標
- 淺析HTML、CSS、JavaScript之間的聯絡與區別!HTMLCSSJavaScript
- @Bean和@Component之間的區別?Bean
- select、poll、epoll之間的區別
- querySelector和getElementById之間的區別
- 敏捷和 Scrum 之間的區別敏捷Scrum
- iOS GCD執行緒之間的通訊iOSGC執行緒
- MVC,MVP和MVVM之間的區別MVCMVPMVVM
- hadoop發行版本之間的區別Hadoop
- return,continue和break之間的區別
- JavaSE、JavaEE、JavaME之間的區別概述Java
- 大資料分析與機器學習之間的區別與聯絡大資料機器學習
- 深度學習與機器學習之間區別 - javaworld深度學習機器學習Java
- startup,startup mount,startup nomount之間的區別
- tali -f 和 tail -F 之間的區別AI
- Linux和windows系統之間的區別LinuxWindows
- 淺談querySelector和getElementById之間的區別
- px,em,rem,vw,vh之間的區別REM
- 【轉】理解 CI 和 CD 之間的區別
- 公共雲和私有云之間的區別
- Hibernate之openSession與getCurrentSession的區別Session
- PHP 中的陣列相加操作以及與 array_merge 之間的區別PHP陣列
- 多執行緒之NSOperation執行緒
- 伺服器與普通電腦之間有什麼區別伺服器
- 一篇讓你明白程式與執行緒之間的區別與聯絡執行緒
- Vue中computed、methods和watch之間的區別Vue
- CI和CD之間的真正區別 -Fire CI
- Python中堆、棧、佇列之間的區別Python佇列
- Kata和Kaizen之間的區別是什麼?AI
- Java之String的equals與contentEquals區別Java
- 宏旺半導體解答ECC與RECC記憶體之間的區別記憶體
- 談談機器學習與傳統程式設計之間的區別機器學習程式設計
- 《西遊記》管理文化與六西格瑪管理文化之間的區別