文章目录
- iOS - 多线程-GCD-队列组
- 1. 队列组
- 1.1 基本使用步骤
iOS - 多线程-GCD-队列组
开发过程中,有时候想实现这样的效果
- 多个任务并发执行
- 所有任务执行完成后,进行下一步处理(比如回到主线程刷新UI)
1. 队列组
可以使用GCD的队列组来实现
1.1 基本使用步骤
- 创建队列组
dispatch_group_create()
- 创建队列
dispatch_queue_create
- 执行任务
- 监听任务完成
dispatch_group_notify
dispatch_group_t group = dispatch_group_create();
dispatch_queue_t queue = dispatch_queue_create("myqueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_group_async(group, queue, ^{for (int i = 0 ; i < 5; i++) {NSLog(@"任务 --- 1");}
});dispatch_group_async(group, queue, ^{for (int i = 0 ; i < 5; i++) {NSLog(@"任务 --- 2");}
});dispatch_group_async(group, queue, ^{for (int i = 0 ; i < 5; i++) {NSLog(@"任务 --- 3");}
});dispatch_group_notify(group, queue, ^{NSLog(@"任务 ---------- 4 ----------");
});
执行结果:
任务 1
、2
、3
并发执行,完成后执行任务4
可以使用多个dispatch_group_notify
,达到这样的效果:任务1
、2
、3
并发执行完成后,再并发执行任务4
、5
dispatch_group_notify(group, queue, ^{NSLog(@"任务 ---------- 4 ----------");
});dispatch_group_notify(group, queue, ^{NSLog(@"任务 ---------- 5 ----------");
});
@oubijiexi