GCD(Grand Central Dispatch)
是libdispatch的市场名称,而libdispatch作为Apple的一个库,为并发代码在多核硬件(跑 iOS 或 OS X )上执行提供有力支持。它具有以下优点:
(1) GCD能通过推迟昂贵计算任务并在后台运行它们来改善你的应用的响应性能。
(2) GCD提供一个易于使用的并发模型而不仅仅只是锁和线程,以帮助我们避开并发陷阱。
(3) GCD具有在常见模式(例如单例)上用更高性能的原语优化你的代码的潜在能力。
Context Switch 上下文切换
一个上下文切换指当你在单个进程里切换执行不同的线程时存储与恢复执行状态的过程。这个过程在编写多任务应用时很普遍,但会带来一些额外的开销。
Synchronous同步 vs. Asynchronous异步
在GCD中,这些术语描述当一个函数相对于另一个任务完成,此任务是该函数要求GCD执行的。一个同步函数只在完成了它预定的任务后才返回。
一个异步函数,刚好相反,会立即返回,预定的任务会完成但不会等它完成。因此,一个异步函数不会阻塞当前线程去执行下一个函数。
Queues 队列
GCD提供有 dispatch queues 来处理代码块,这些队列管理你提供给GCD的任务并用FIFO顺序执行这些任务。这就保证了第一个被添加到队列里的任务会是队列中第一个开始的任务,而第二个被添加的任务将第二个开始,如此直到队列的终点。