use*_*472 3 swift swift-concurrency
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)")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是https://www.hackingwithswift.com/quick-start/concurrency/whats-the-difference- Between-a-task-and-a-detached-task 中描述的代码。
由于 doWork 中的任务是分离的,我希望它们同时执行。上面的文章也是这么说的。
但是,当我运行它时,Task2 在 Task1 之后执行。
我错了吗?
通过将项目放入独立任务中,您可以让操作系统决定何时安排它们。显然,对于您查看的其中一次,系统决定将它们依次安排。没有什么可说的,下次您查看时,它们不会并行安排,或者第二个在第一个之前运行。
关键是你无法控制它。操作系统明天可能会做出与今天不同的决定。通过将工作放入任务中,您已将控制权交给了操作系统。
| 归档时间: |
|
| 查看次数: |
520 次 |
| 最近记录: |