gpt4 book ai didi

swift - 串行 Grand Central Dispatch 中的完成处理程序

转载 作者:行者123 更新时间:2023-11-28 15:11:24 24 4
gpt4 key购买 nike

serialQueue 完成下载任务后,我想返回所有下载的对象。我想跟踪串行队列何时完成其任务。那么,Serial GCD 中是否有完成处理程序?或者,我是否必须为此目的使用 NSOperationQueue

 func serialGCD(links: [String]) -> [String] {
let data: [String] = []
let serialQueue = DispatchQueue(label: "com.self.serialGCD")
links.forEach { (x) in
serialQueue.async {
//data task
//data.append(downloadedData)
}
}
return data
}

最佳答案

您可以在此处使用 DispatchGroup 来实现类似完成的行为。您可以使用 DispatchGroup 提交多个任务并跟踪它们何时全部完成,即使它们可能在不同的队列上运行。

func serialGCD(links: [String]) -> [String] {
let data: [String] = []
let serialQueue = DispatchQueue(label: "com.self.serialGCD")

let group = DispatchGroup()

links.forEach { (x) in
group.enter()

serialQueue.async {
//data task
//data.append(downloadedData)

group.leave()
}
}

group.notify(queue: .main) {
//Completion block
}

return data
}

关于swift - 串行 Grand Central Dispatch 中的完成处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47573326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com