【发布时间】:2020-11-08 14:29:38
【问题描述】:
例如,有一个 1000 次循环。使其快速、有效且不会导致死锁的最大值是多少?
let group = DispatchGroup()
let queue = DispatchQueue(label: "com.num.loop", attributes: .concurrent)
let semaphore = DispatchSemaphore(value: 4)
for i in 1...1000 {
semaphore.wait()
group.enter()
queue.async(group: group, execute: {
doWork(i)
group.leave()
semaphore.signal()
})
}
group.notify(queue: DispatchQueue.main) {
// go on...
}
【问题讨论】:
-
顺便说一句,(如果我指出明显的问题,我很抱歉)我们还没有讨论发布与调试版本。如果您还没有这样做,请确保您进行了“发布”构建,因为这是经过优化的,并且可能对性能产生比我们讨论过的任何其他内容更显着的影响。
标签: ios swift grand-central-dispatch semaphore dispatch-async