GCD实现:A、B、C 三个任务同步执行,完成后执行任务 D
2018-11-23 本文已影响0人
堕落白天使
需要解决这个首先就需要了解dispatch_group_enter 和 dispatch_group_leave。
dispatch_group_enter 标志着一个任务追加到 group,执行一次,相当于 group 中未执行完毕任务数+1
dispatch_group_leave 标志着一个任务离开了 group,执行一次,相当于 group 中未执行完毕任务数-1。
当 group 中未执行完毕任务数为0的时候,才会使dispatch_group_wait解除阻塞,以及执行追加到dispatch_group_notify中的任务。
1.在主线程中同步执行
![](https://img.haomeiwen.com/i6217263/4935c0981b8d189f.png)
![](https://img.haomeiwen.com/i6217263/07dec7a030b2d7db.png)
2.在子线程中异步执行
![](https://img.haomeiwen.com/i6217263/9f018e5342efb063.png)