GCD底层实现理解

GCD底层实现理解:

1.GCD的层次比线程高,其底层是利用多线程来实现的,苹果将线程交给了系统去管理,这样任务的管理和执行比起线程来更加高效。

2.使用者要做的是定义自己Task任务,然后将其放到合适的分发队列去执行。


3.GCD的本质是在操作系统层面提供并行调度的,这样任务的切换效率要远高于内核的切换效率,它的大部分功能是在运行库里实现的。 

GCD(Grand Central Dispatch)是苹果为实现并发编程提供的新技术。从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。但是GCD比之NSOpertionQueue更底层更高效。 

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

GCD提供很多超越传统多线程编程的优势:

       a.易用: GCD比之thread更加简单易用。由于GCD基于工作单元(work unit)而非像thread那样基于运算,所以GCD可以控制诸如等待任务结束、监视文件描述符、周期执行代码以及工作挂起等任务。作为程序员只要一心关注自己的业务逻辑,可以从繁杂的线程管理的工作中解放出来。基于block的血统导致它能极为简单,可以在不同代码作用域之间传递上下文(闭包特性)。

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

      c.高性能: GCD自动根据系统负载(比例内存使用情况、CPU个数)来增减线程数量,它甚至可以在一个线程中实现多任务的并发,这就减少了上下文切换带来的开销,增加了计算效率。 

猜你喜欢

转载自blog.csdn.net/LIN1986LIN/article/details/84875231
今日推荐