iOS#GCD回顾系列之概论

GCD全称 Grand Central Dispatch,属于系统级的线程管理,提供了一种新的方法进行并发程序编写,是一套底层API。另外,GCD这块已经开源,地址http://libdispatch.macosforge.org

从基本功能上讲,GCD将程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCG相对与NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分。

  除了代码的平行执行能力,GCD还提供 高度集成的事件控制系统。可以设置句柄来响应文件描述符、mach ports(Mach port 用于 OS X上的进程间通讯)、进程、计时器、信号、用户生成事件。这些句柄通过GCD来并发执行。

  从函数角度上讲,GCD的API很大程度上基于block,当然,GCD也可以脱离block来使用,比如使用传统c机制提供函数指针和上下文指针。实践证明,当配合block使用时,GCD非常简单易用且能发挥其最大能力。

为什么使用?

易用性: GCD比之thread跟简单易用。由于GCD基于work unit而非像thread那样基于运算,所以GCD可以控制诸如等待任务结束、监视文件描述符、周期执行代码以及工作挂起等任务。基于block的血统导致它能极为简单得在不同代码作用域之间传递上下文。

效率性: GCD被实现得如此轻量和优雅,使得它在很多地方比之专门创建消耗资源的线程更实用且快速。这关系到易用性:导致GCD易用的原因有一部分在于你可以不用担心太多的效率问题而仅仅使用它就行了。

性能性: GCD自动根据系统负载来增减线程数量,这就减少了上下文切换以及增加了计算效率。

家族体系

CGD-Family.png

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 程序中同步和异步是什么意思?有什么区别? 解释一:异步调用是通过使用单独的线程执行的。原始线程启动异步调用,异步调...
    风继续吹0阅读 4,633评论 1 2
  • 多线程 在iOS开发中为提高程序的运行效率会将比较耗时的操作放在子线程中执行,iOS系统进程默认启动一个主线程,用...
    郭豪豪阅读 7,389评论 0 4
  • iOS的三种多线程技术 NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 以下两点...
    7分醉阅读 3,372评论 0 4
  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 5,778评论 0 17
  • iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2....
    XDUZ阅读 3,909评论 0 3