这篇主要将对dispatch_group_t
进行梳理应用,其主要用于监听管理任务组中任务完成情况,在任务完成后做一些操作处理。
最常见的几个方法
|
|
实战
|
|
1、创建串行、并发队列各一个
2、向任务组的并发队列中添加了 3秒后执行并发队列任务1、2秒后并发队列任务2(enter/leave)、1秒后执行任务3
3、向任务组的串行队列中添加了 2秒后执行串行队列任务1、2秒后执行串行队列任务2
4、在并发队列任务2(enter/leave)后添加了任务等待
5、通知任务完成
2个并发队列任务开辟两条新线程,并发执行耗时3秒,同时串行队列中的2个任务在同一线程中执行耗时4秒。因为在并发任务后添加任务组等待方法,所以并发队列任务3要等前面4个任务执行完毕才能执行,任务组总共耗时5秒,如果去掉任务等待耗时为4秒。
总结
- 使用
dispatch_sync/dispatch_async
来处理同步或异步,其实完没有必要,串行并发队列完全可以满足需求,并且使用dispatch_async
会导致任务组提前通知完成; - 任务组通知不区分串还是并行队列,任务组中所有任务执行完成才会收到通知。