GCD入門介紹一
什麼是GCD?
Grand Central Dispatch是一套底層API,提供一種新的方法進行並行程式編寫。GCD跟NSOperationQueue比較像,它允許程式將任務切分為多個單一任務然後提交到工作佇列中併發地或者序列地執行。GCD比NSOpertaionQueue更底層更高效,並且它不是Cocoa框架的一部分。
GCD的API很大程度上基於block,當然,GCD也可以脫離block來使用,比如使用系統c機制提供函式指標和上下文指標。GCD一般與block配合使用時,能發揮其最大能力。
GCD的優勢
1.易用:GCD比NSThread簡單易用。由於GCD基於work unit而非像thread那樣基於運算,所以GCD可以控制諸如等待任務結束、監視檔案描述符、週期執行程式碼以及工作掛起等任務。基於block的GCD,讓它能極為簡單得在不同程式碼作用域之間傳遞上下文。
2.效率:GCD被實現得如此輕量和優雅,使得它在很多地方比之專門建立消耗資源的執行緒更實用且快速。
3.效能:GCD自動根據系統負載來增減執行緒數量,減少了上下文切換以及增加了計算效率。
Dispatch Objects
GCD是純C語言的,它被組建成物件導向的風格。GCD物件被稱為Dispatch object。Dispatch object像Cocoa物件一樣是引用計數的。使用dispatch_release和dispatch_retain函式來操作dispatch object的引用計數來進行記憶體管理。
Dispatch Queues
GCD的基本概念就是dispatch queue。dispatch queue是一個物件,它可以接受任務,並將任務以先到先執行的順序來執行。dispatch queue可以是併發的或者序列的,併發任務會像NSOperationQueue那樣基於系統負載來合適地併發進行,序列佇列同一時間只執行單一任務。
GCD中三種佇列型別:
1.Main queue:與主執行緒功能相同。實際上,提交到main queue的任務會在主執行緒中執行。main queue可以呼叫dispatch_get_main_queue()來獲得。
2.Global queues:全域性佇列是併發佇列,並由整個程式共享。程式中存在三個全域性佇列:高、中(預設)、低三個優先佇列。通過dispatch_get_global_queue函式傳入優先順序來訪問佇列。
3.使用者佇列:dispatch_queue_create建立佇列。
相關文章
- Nginx 入門介紹Nginx
- Django 入門介紹Django
- rollup入門介紹
- Tmux 入門介紹UX
- Mybatis 入門介紹MyBatis
- Rocketmq 入門介紹MQ
- GCD、dispatch 函式介紹GC函式
- NodeJs 入門到放棄 — 入門基本介紹(一)NodeJS
- 【Ionic2系列】 一、入門介紹
- Azure Cosmos DB (一) 入門介紹
- libevent入門介紹
- linux介紹(入門)Linux
- StackStorm 介紹與入門ORM
- 比特幣入門一基礎介紹比特幣
- Java爬蟲入門(一)——專案介紹Java爬蟲
- 機器學習入門之sklearn介紹機器學習
- WebSocket協議入門介紹Web協議
- Spring Shell入門介紹Spring
- 整合學習入門介紹
- React Native入門介紹React Native
- jQuery物件入門級介紹jQuery物件
- XML入門的小介紹XML
- Arduino 入門之Arduino介紹UI
- 原創:spring入門介紹第一講Spring
- iOS GCD入門和GCD對CPU多核的使用iOSGC
- 網路流量預測入門(一)之RNN 介紹RNN
- IOS 初級開發入門教程(一)介紹篇iOS
- ARouter簡單入門和介紹
- ffmpeg-入門介紹(筆記)筆記
- java語言的入門介紹Java
- Movie Collector pro for Mac入門介紹Mac
- MySQL儲存引擎入門介紹MySql儲存引擎
- Awk 20 分鐘入門介紹
- [原]Android Fragment 入門介紹AndroidFragment
- shiro入門知識介紹
- Ubuntu/Linux入門介紹-VIM簡介(轉)UbuntuLinux
- 手摸手帶你入門ionic3(一):ionic介紹
- Ubuntu/Linux入門介紹-一些問題(轉)UbuntuLinux