学习笔记

Swift 并发编程入门

2026-10-20
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 可以并发执行多个异步操作
← 返回首页