这很漂亮,我不知道为什么它不起作用,但是我所做的任何设置实际上都不会触发调度组的通知。
我也没有收到也没有错误消息,这让我相信我可能缺少某种配置。
我正在使用xCode构建快速的Kitura Server,并从另一个线程复制了一个假定的工作功能,以一种简单的方法测试我的情况。
但是,当我执行该功能时,它不会触发通知语句。
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")
}
}
结果
start
enter queue 0
enter queue 1
0..<100 with i: 0 4950
enter queue 2
0..<50 with i: 1 1225
leave queue 0
leave queue 1
0..<33 with i: 2 528
leave queue 2
即使我使它更加简单...也不会触发notify语句。
public static func withCategories(query: query, completion: @escaping ([return_provider]?,
RequestError?) -> Void){
let group = DispatchGroup()
group.enter()
print("in between")
group.leave()
group.notify(queue: .main) {
print("finished")
}
myFunction()
}
结果
in between
似乎主事件循环做得很好
stackoverflow.com/q/48597036/1187415。
MAC发生问题,但是在Linux中也存在]