iOS 多线程-GCD任务+队列.
iOS 多线程-GCD队列组.
iOS 多线程-GCD栅栏方法.
在实际的开发中,对于多线程的使用是多种多样的,因为需求的不同,处理逻辑也不同。
现在有两个耗时操作A和B,现在需要A和B都异步执行,当A和B都执行完成后再执行C。
这样的操作逻辑很常见,例如:一个界面需要展示两个接口请求的数据,需要两个接口全部请求完成才能刷新视图,展示数据。
对于这样的操作逻辑,对于这样的操作要求,我们可以使用队列组来完成。
队列组的使用
队列组的使用我分为3种方式:
1、通知方式:dispatch_group_notify
2、等待方式(堵塞方式):dispatch_group_wait
3、进入走出方式:dispatch_group_enter、dispatch_group_leave
无论是哪一种方式,都需要先去创建队列组、创建队列和创建任务。
1、创建队列组:
//创建队列组
dispatch_group_t group = dispatch_group_create();
//获取全局并行队列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
通知方式:dispatch_group_notify
- (void)queueGroupNotify{
//创建队列组
dispatch_group_t group = dispatch_group_create();
//获取全局并行队列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
//创建异步任务
dispatch_group_async(group, queue, ^{
//任务1
for (int i = 0; i < 3; i++) {
[NSThread sleepForTimeInterval:2];