iOS GCD详解
iOS GCD详解一、什么是GCD? GCD(Grand Central Dispatch),是一套低层API,提供了一种新的方法来进行并发程序编写。它允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之NSOperationQueue更底层更高效,并且它不是Cocoa框架的一部分。二、GCD的优点1.易用:GCD比之thread更简单易用。由于GCD基于work unit而非像thread那样基于运算,所以GCD可以控制诸如等待任务结束、监视文件描述符、周期执行代码以及工作挂起等任务。 2.效率:GCD被实现得如此轻量和优雅,使得它在很多地方比之专门创建消耗资源的线程更实用且快速。 3.性能:GCD自动根据系统负载来增减线程数量,这就减少了上下午切换以及增加了计算效率。三、Dispatch Objects Dispatch Objects是GCD的核心,GCD对象被称为dispatch object。Dispatch object像Cocoa对象一样是引用计数的。使用dispatch_release和dispatch_retain函数来操作dispatch object的引用计数来进行内存管理。四、Dispatch Queues Dispatch Queues是GCD的基本概念,dispatch queue是一个对象,它可以接受任务,并将任务以先到先执行的顺序来执行。dispatch queue可以是并发的或串行的。GCD中有三种队列类型: 1.主队列(main queue):与主线程功能相同。实际上,提交至main queue的任务会在主线程中执行。 2.全局队列(Global queues):全局队列是并发队列,并由整个进程共享。进程中存在三个全局队列:高、中(默认)、低三个优先级队列。 3.用户队列(User queues):用户队列是用函数dispatch_queue_create创建的队列。这些队列是串行的。五、提交Job向一个队列提交Job很简单:调用dispatch_async函数,传入一个队列和一个block。队列会在轮到这个block执行时执行这个block的代码。六、使用GCD的优势使用GCD可以提供很多超越传统多线程编程的优势,如易用性、效率、性能等。GCD自动根据系统负载来增减线程数量,这就减少了上下午切换以及增加了计算效率。
88.5KB
文件大小:
评论区