Swift 面试题
目录

Swift 中 TaskGroup 的用法?

· 约 3 分钟读完 · 第 137 / 196 章

推荐答案

本题详细解读

TaskGroup 的基本概念

TaskGroup 是 Swift 并发编程中的一个重要工具,用于管理一组并发的子任务。它允许你将多个任务分组,并在这些任务完成后收集它们的结果。TaskGroup 通常与 withTaskGroup(of:returning:body:) 函数一起使用。

使用步骤

  1. 创建 TaskGroup:通过 withTaskGroup(of:returning:body:) 函数创建一个 TaskGroup。这个函数接受一个闭包,闭包中你可以添加多个子任务。

  2. 添加子任务:在 TaskGroup 的闭包中,使用 addTask 方法添加子任务。每个子任务都会并发执行。

  3. 收集结果:通过 for await 循环遍历 TaskGroup,收集每个子任务的结果。

  4. 处理结果:在任务组中的所有任务完成后,你可以对结果进行处理。

代码解析

  • withTaskGroup(of: Int.self):创建一个 TaskGroup,其中每个子任务的返回类型为 Int。

  • group.addTask:向任务组中添加子任务。每个子任务都会并发执行。

  • for await result in group:等待并收集每个子任务的结果。

  • performTask(id:):模拟一个耗时任务,返回 id * 2 作为结果。

注意事项

  • 任务组的生命周期:TaskGroup 的生命周期由 withTaskGroup 函数管理,任务组中的所有任务完成后,withTaskGroup 函数才会返回。

  • 任务取消:如果任务组中的某个任务被取消,整个任务组也会被取消。

  • 结果顺序:TaskGroup 中的任务是无序的,结果的顺序可能与任务的添加顺序不一致。

通过 TaskGroup,你可以轻松地管理多个并发任务,并在它们完成后统一处理结果。