gpt4 book ai didi

使用 DispatchQueue.concurrentPerform(迭代 :) no longer runs concurrently under Mac OS Sierra

转载 作者:搜寻专家 更新时间:2023-10-31 08:06:16 24 4
gpt4 key购买 nike

在 Sierra 下测试我的代码时,我发现以前处理并发队列的方法不再有效。

在分析我的 C++ 代码库中的错误时,一位用户提出了一种变通方法,其中涉及为队列声明明确命名一个目标(请参阅这篇文章:C++11 app that uses dispatch_apply not working under Mac OS Sierra),这似乎已经解决了问题。

在 Swift 3 中,以下代码将用于并发执行一个闭包,但它展示了一个类似于上面帖子中的 C++ 示例:

import Foundation
import GameKit

DispatchQueue.concurrentPerform(iterations: 1000) { index in
let pauseTime = GKRandomSource.sharedRandom().nextInt(upperBound: 5)
sleep(UInt32(pauseTime))
print(index)
}

...然而,当我执行它时,它会连续运行每个 block ,并且索引会按数字顺序输出。

有人知道我可以如何利用该帖子中推荐的解决方法来解决我在 Swift 中的“并发”调度问题吗?

最佳答案

基于 duemunk 的评论,以下是我如何在后台队列上并行应用函数 performFunction:

    let queue = DispatchQueue(label: "myQueue", qos: .userInteractive, attributes: .concurrent)
queue.async {
DispatchQueue.concurrentPerform(iterations: iterations) {
index in
performOperation(index)
}
}

关于使用 DispatchQueue.concurrentPerform(迭代 :) no longer runs concurrently under Mac OS Sierra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39843007/

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