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ù)量,這就減少了上下文切換以及增加了計算效率。
家族體系
參考文章:
1.http://www.dreamingwish.com/article/grand-central-dispatch-basic-1.html