Swift 并发编程入门
Swift并发
什么是 async/await
async/await 是 Swift 5.5 引入的并发编程模型。它让异步代码的写法看起来和同步代码一样,大幅提升了可读性和可维护性。相比传统的回调(Callback)和 GCD(Grand Central Dispatch),async/await 避免了回调地狱和复杂的闭包嵌套。
基本用法
用 async 关键字标记一个函数为异步函数,用 await 关键字调用它:
func fetchData() async throws -> Data {
let url = URL(string: "https://api.example.com/data")!
let (data, response) = try await URLSession.shared.data(from: url)
return data
}
调用时需要在异步上下文中使用 await:
Task {
do {
let data = try await fetchData()
print("获取到 \(data.count) 字节")
} catch {
print("请求失败: \(error)")
}
}
Actor 保证线程安全
Swift 的 actor 类型自动保护其内部状态,同一时刻只有一个任务可以访问 actor 的属性和方法,无需手动加锁:
actor Counter {
private var count = 0
func increment() { count += 1 }
func getCount() -> Int { count }
}
小结
async标记异步函数,await等待异步结果Task创建异步任务,Task.detached创建独立任务actor提供内置的线程安全保护async let可以并发执行多个异步操作