gpt4 book ai didi

swift - 多个detached任务不会同时执行

转载 作者:行者123 更新时间:2023-12-05 09:01:26 24 4
gpt4 key购买 nike

class ViewModel: ObservableObject { }

struct ContentView: View {
@StateObject private var model = ViewModel()

var body: some View {
Button("Authenticate", action: doWork)
}

func doWork() {
Task.detached {
for i in 1...10_000 {
print("In Task 1: \(i)")
}
}

Task.detached {
for i in 1...10_000 {
print("In Task 2: \(i)")
}
}
}
}

这是https://www.hackingwithswift.com/quick-start/concurrency/whats-the-difference-between-a-task-and-a-detached-task中描述的代码.

由于doWork中的Tasks是detached的,所以我希望它们是同时执行的。上面的文章也是这么说的。

但是,当我运行它时,Task2 在 Task1 之后执行。
我错了吗?

最佳答案

通过将项目放入分离任务中,您让操作系统决定何时安排它们。显然,对于您查看的其中一次,系统决定一个接一个地安排它们。没有什么可说的,下次您查看时它们不会被并行安排,或者第二个在第一个之前运行。

关键是您无法控制它。操作系统明天可能会做出与今天不同的决定。通过将工作置于任务中,您已将控制权交给了操作系统。

关于swift - 多个detached任务不会同时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73194897/

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