GCD 多线程
Grand Central Dispatch
Dispatch Queue
执行处理的等待队列,分为:Serial Dispatch Queue 和 Concurrent Dispatch Queue。
| Dispatch Queue 种类 | 备注 |
|---|---|
| Serial Dispatch Queue | 等待现在执行中处理结束 |
| Concurrent Dispatch Queue | 不等待现在执行中处理解锁 |
dispatch_queue_create
dispatch_queue_t serialDispatchQueue = dispatch_queue_create("com.example.serialDispatchQueue", NULL);
dispatch_queue_t concurrentDispatchQueue = dispatch_queue_create("com.example.concurrentDispatchQueue", DISPATCH_QUEUE_CONCURRENT);
iOS 6.0 或 macOS 10.8 之前需手动释放队列和保持队列,之后 GCD 对象已纳入 ARC 管理范围
dispatch_release(serialDispatchQueue); // 已废弃
dispatch_retain(concurrentDispatchQueue); // 已废弃
Main Dispatch Queue
主线程队列,追加到主线程的任务在主线程的 RunLoop 处理
Global Dispatch Queue
Global Dispatch Queue 是所有应用程序都能使用的 Concurrent Dispatch Queue。Global Dispatch Queue 有 4 个执行优先级,分别为高优先级、默认优先级、低优先级和后台优先级。通过 XNU 内核管理的用于 Global Dispatch Queue 的线程,将各自使用的 Global Dispatch Queue 的执行优先级作为线程的执行优先级使用。在向 Global Dispatch Queue 追加处理时,应选择与处理内容对应的执行优先级的 Global Dispatch Queue。
dispatch_set_target_queue
dispatch_after
dispatch_async
dispatch_sync
dispatch_barrier_async
dispatch_barrier_sync
dispatch_apply
dispatch_suspend
dispatch_resume
dispatch_once
Dispatch Semaphore
Dispatch Group
Dispatch I/O
获取当前队列 Label
String(validatingUTF8: __dispatch_queue_get_label(nil))