我正在尝试学习快速并发,但它带来了很多混乱。我知道 Task {} 是一个异步单元,它允许我们从同步上下文桥接异步函数调用。它类似于 DispatchQueue.Global() ,后者将在某个任意线程上执行该块。
override func viewDidLoad() {
super.viewDidLoad()
Task {
do {
let data = try await asychronousApiCall()
print(data)
} catch {
print("Request failed with error: \(error)")
}
}
for i in 1...30000 {
print("Thread \(Thread.current)")
}
}
Run Code Online (Sandbox Code Playgroud)
我的 asychronousApiCall 函数如下
func asychronousApiCall() async throws -> Data {
print("starting with asychronousApiCall")
print("Thread \(Thread.current)")
let url = URL(string: "https://www.stackoverflow.com")!
// Use the async variant of URLSession to fetch data
// Code might suspend here
let (data, _) = …Run Code Online (Sandbox Code Playgroud)