GCD 是 Grand Central Dispatch 的缩写,它是 iOS 中进行多线程编程的一种方式。GCD 底层使用 C 语言编写,提供了同步(dispatch_sync)和异步(dispatch_async)两种执行任务的方式。
GCD 的主要优点:
- 简单易用,无需直接管理线程生命周期。
- 高效,可以最大限度利用系统资源。
- 安全,内置了对线程管理的封装。
但是 GCD 也有一定的缺点:
- 难以取消或管理已启动的任务。
- 任务执行结果无法取得。
- 任务依赖关系难以表示。
下面是一个使用 GCD 的代码示例:
objc
// 1. 获取全局队列
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
// 2. 异步执行任务
dispatch_async(queue, ^{
for (int i = 0; i < 5; i++) {
NSLog(@"%@ - %d",[NSThread currentThread], i);
}
});
// 3. 同步执行任务
dispatch_sync(queue, ^{
for (int i = 0; i < 5; i++) {
NSLog(@"%@ - %d",[NSThread currentThread], i);
}
});
// 4. 延时执行
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), queue, ^{
// 1 秒后执行任务
});