Swift DispatchGroup不会在MAC上调用通知

问题描述 投票:0回答:1

这很漂亮,我不知道为什么它不起作用,但是我所做的任何设置实际上都不会触发调度组的通知。

我也没有收到也没有错误消息,这让我相信我可能缺少某种配置。

我正在使用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
swift dispatch
1个回答
-1
投票

似乎主事件循环做得很好

stackoverflow.com/q/48597036/1187415。

MAC发生问题,但是在Linux中也存在]

Asynchronous Swift processing in Linux not working

© www.soinside.com 2019 - 2024. All rights reserved.