代码

import UIKit

// 使用调度组可以将多个线程中的任务进行组合管理,可以设置当多个相同层次的任务完成之后,再执行另一项任务

print ("Start!")
// 初始化一个调度组对象
let group = DispatchGroup()
// 同时运行多个任务,每个任务的启动时间是按照加入队列的顺序,结束的顺序则依赖各自具体的任务
let globalQueue = DispatchQueue.global()
// 通过队列的异步方法,将传入的block块,放入指定的queue队列里运行
globalQueue.async(group: group, execute: DispatchWorkItem(block: {
    print("Load")
}))
// 使用相同的方式,将另外一个异步执行的线程任务,添加到队列中
globalQueue.async(group: group, execute: DispatchWorkItem(block: {
    print("Get")
}))
// 当调度组中的任务全部完成后,调用通知方法,完成调度组的任务,并执行接下来的块中的动作
group.notify(queue: globalQueue, execute: {
    print("Complete")
})
// 从控制台输出的内容可以看出,被添加到队列中的三个异步任务全部完成之后,执行了通知方法中的代码块
globalQueue.async(group:group,execute:DispatchWorkItem(block:{
    print("Wait")
}))

截图

iShot20220410 下午2.56.42.png

Q.E.D.