iOS - 多线程-GCD-队列组 iOS - 多线程-GC

iOS - 多线程-GCD-队列组

开发过程中,有时候想实现这样的效果

  • 多个任务并发执行
  • 所有任务执行完成后,进行下一步处理(比如回到主线程刷新UI)
  1. 队列组

可以使用GCD的队列组来实现

1.1 基本使用步骤

  • 创建队列组dispatch_group_create()
  • 创建队列dispatch_queue_create
  • 执行任务
  • 监听任务完成dispatch_group_notify
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
ini复制代码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 ----------");
});

执行结果:

任务 123并发执行,完成后执行任务4

可以使用多个dispatch_group_notify,达到这样的效果:任务123并发执行完成后,再并发执行任务45

1
2
3
4
5
6
7
arduino复制代码dispatch_group_notify(group, queue, ^{
NSLog(@"任务 ---------- 4 ----------");
});

dispatch_group_notify(group, queue, ^{
NSLog(@"任务 ---------- 5 ----------");
});

@oubijiexi

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%