Łuk*_*tta 0 grand-central-dispatch ios swift
我有3个线程从互联网上下载数据.
func thread1() {
DispatchQueue.global().async {
// do something from json
}
}
func thread2() {
DispatchQueue.global().async {
// do something from json
}
}
func thread3() {
DispatchQueue.global().async {
// download img
}
}
func finishFunction() {
print("Finish")
}
Run Code Online (Sandbox Code Playgroud)
我想在完成线程1,2和3后启动finishFunction函数.如何做到这一点?
通常,您不会将函数体包装在sync/ asynccalls中.最好让函数执行它所做的事情,然后让调用者可以灵活地将它们分配给他们想要的QoS,他们想要的队列,以及他们想要的任何其他标志.
func doSomethingFromJSON1() {}
func doSomethingFromJSON2() {}
func downloadImage() {}
func doItAll() {
let dispatchGroup = DispatchGroup()
dispatchGroup.enter()
DispatchQueue.global().async {
doSomethingFromJSON1()
dispatchGroup.leave()
}
dispatchGroup.enter()
DispatchQueue.global().async {
doSomethingFromJSON2()
dispatchGroup.leave()
}
dispatchGroup.enter()
DispatchQueue.global().async {
downloadImage()
dispatchGroup.leave()
}
dispatchGroup.notify(queue: .global) {
finishFunction()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |