iOS#GCD回顧系列之概論

GCD全稱 Grand Central Dispatch,屬于系統(tǒng)級的線程管理,提供了一種新的方法進行并發(fā)程序編寫,是一套底層API。另外,GCD這塊已經(jīng)開源,地址http://libdispatch.macosforge.org

從基本功能上講,GCD將程序?qū)⑷蝿?wù)切分為多個單一任務(wù)然后提交至工作隊列來并發(fā)地或者串行地執(zhí)行。GCG相對與NSOpertionQueue更底層更高效,并且它不是Cocoa框架的一部分。

??除了代碼的平行執(zhí)行能力,GCD還提供 高度集成的事件控制系統(tǒng)。可以設(shè)置句柄來響應(yīng)文件描述符、mach ports(Mach port 用于 OS X上的進程間通訊)、進程、計時器、信號、用戶生成事件。這些句柄通過GCD來并發(fā)執(zhí)行。

??從函數(shù)角度上講,GCD的API很大程度上基于block,當然,GCD也可以脫離block來使用,比如使用傳統(tǒng)c機制提供函數(shù)指針和上下文指針。實踐證明,當配合block使用時,GCD非常簡單易用且能發(fā)揮其最大能力。

為什么使用?

易用性: GCD比之thread跟簡單易用。由于GCD基于work unit而非像thread那樣基于運算,所以GCD可以控制諸如等待任務(wù)結(jié)束、監(jiān)視文件描述符、周期執(zhí)行代碼以及工作掛起等任務(wù)。基于block的血統(tǒng)導致它能極為簡單得在不同代碼作用域之間傳遞上下文。

效率性: GCD被實現(xiàn)得如此輕量和優(yōu)雅,使得它在很多地方比之專門創(chuàng)建消耗資源的線程更實用且快速。這關(guān)系到易用性:導致GCD易用的原因有一部分在于你可以不用擔心太多的效率問題而僅僅使用它就行了。

性能性: GCD自動根據(jù)系統(tǒng)負載來增減線程數(shù)量,這就減少了上下文切換以及增加了計算效率。

家族體系

CGD-Family.png

參考文章:
1.http://www.dreamingwish.com/article/grand-central-dispatch-basic-1.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 程序中同步和異步是什么意思?有什么區(qū)別? 解釋一:異步調(diào)用是通過使用單獨的線程執(zhí)行的。原始線程啟動異步調(diào)用,異步調(diào)...
    風繼續(xù)吹0閱讀 1,050評論 1 2
  • 多線程 在iOS開發(fā)中為提高程序的運行效率會將比較耗時的操作放在子線程中執(zhí)行,iOS系統(tǒng)進程默認啟動一個主線程,用...
    郭豪豪閱讀 2,617評論 0 4
  • iOS的三種多線程技術(shù) NSThread 每個NSThread對象對應(yīng)一個線程,量級較輕(真正的多線程) 以下兩點...
    7分醉閱讀 513評論 0 4
  • Object C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼,方法是什么?如果想延時執(zhí)行代碼、方法又是什么? 1...
    AlanGe閱讀 1,792評論 0 17
  • iOS的三種多線程技術(shù) 1.NSThread 每個NSThread對象對應(yīng)一個線程,量級較輕(真正的多線程) 2....
    XDUZ閱讀 685評論 0 3