什么是GCD
GCD 是 libdispatch 的市场名称,作为 Apple 的一个库, 为 并发代码 在多核硬件上执行提供有力支持,有以下几个优点
- GCD可以在后台运行费时间的计算任务,这将改善应用程序的响应能力
- 易用使用
- 对一些常见模式(如单例)有高性能的原语优化能力(能更优化你的速度)
GCD工作模式
将一个 Block 放到一个指定的 队列 中,根据不同的队列对其中的 Block 进行调用,帮助我们处理了线程并发过程中的问题,使用多线程变得更加容易.还调试集成了事件控制系统,如信号,计时器等
Dispatch 对象
是纯C语言的,但有面向对象的风格. Dispatch Object 像Cococa对象一样使用引用计数.但 Dispatch Object 并不参与垃圾回收系统,所以必须使用 dispatch_release 和 dispatch_retain 函数来操作对象.
GCD 队列类型
1: The main queue
dispatch_get_main_queue()主队列,是一个串行队列.提交到此队列的会在主线程中执行.
2: Global queue
dispatch_get_global_queue()全局队列,有不同的优先级别.是一个并发队列,由整个进程共享
3: user queue
dispatch_queue_create()用户队列,自行创建,可以是串行或并行
执行Block
dispatch_async 和 dispatch_sync
做的事都是一样的.就是一个异步,一个同步. sync会等待block的代码捃完成后再返回