调度组通知不起作用
Dispatch group notify not working
我正在学习 GCD。并做一个这样的例子:
click to enlarge
我创建函数调用三个异步块并使用调度组进入和离开每个块
貌似group.enter(),group.leave()被调用了3次但是群里没有通知我
我想问一下这段代码的问题,请帮助我。
这是我的代码:
func myFunction() {
let group = DispatchGroup()
let queue = DispatchQueue.global(qos: .default)
print("start")
for i in 0..<3 {
let count = 100/(i+1)
var a = 0
group.enter()
print("enter queue \(i)")
queue.async(group: group, execute: {
for index in 0..<count {
a = a + index
}
print("0..<\(count) with i: \(i)", a)
group.leave()
print("leave queue \(i)")
})
}
group.notify(queue: .main) {
print("after queue doing")
}
}
如果您在 Playground 上执行异步代码,则需要通过在顶部添加以下代码来启用无限期执行:
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
我可以在 Playground 上测试你的代码,它工作正常。
我正在学习 GCD。并做一个这样的例子:
我创建函数调用三个异步块并使用调度组进入和离开每个块 貌似group.enter(),group.leave()被调用了3次但是群里没有通知我
我想问一下这段代码的问题,请帮助我。 这是我的代码:
func myFunction() {
let group = DispatchGroup()
let queue = DispatchQueue.global(qos: .default)
print("start")
for i in 0..<3 {
let count = 100/(i+1)
var a = 0
group.enter()
print("enter queue \(i)")
queue.async(group: group, execute: {
for index in 0..<count {
a = a + index
}
print("0..<\(count) with i: \(i)", a)
group.leave()
print("leave queue \(i)")
})
}
group.notify(queue: .main) {
print("after queue doing")
}
}
如果您在 Playground 上执行异步代码,则需要通过在顶部添加以下代码来启用无限期执行:
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
我可以在 Playground 上测试你的代码,它工作正常。