最近学习协程很困惑。以下是 swift 代码,还是没大明白协程的工作过程:
func fetchData() async -> String {
print("Start fetching data")
// 模拟异步操作,使用 Task.sleep 等待 2 秒钟
await Task.sleep(2_000_000_000)
print("Data fetching complete")
return "Data"
}
func processData() async {
print("Start processing data")
let data = await fetchData() // 等待 fetchData() 异步操作的完成
print("Data processing complete. Received: \(data)")
}
print("Before calling processData")
Task {
await processData() // 调用异步函数 processData()
}
print("After calling processData")
疑问:
- 协程本质是实现了串行还是并行运行?
- 当运行到协程 await 语句时,当前线程是挂起状态吗。(按照资料上说,协程不会阻塞当前线程)
- 这个 Task 是否就是开启一个新的线程执行?