【问题标题】:TaskGroup `async` vs. `spawn`TaskGroup `async` vs. `spawn`
【发布时间】:2021-08-30 22:26:48
【问题描述】:

有谁知道,在新的 Swift async/await 东西中,TaskGroup async 和 spawn 之间有什么区别,或者它们是纯同义词吗? (如果它们是同义词,我更喜欢 spawn。async 看起来我们正在打开一个 async 块,而这根本不是我们正在做的事情。)

https://developer.apple.com/documentation/swift/taskgroup/3814850-async

https://developer.apple.com/documentation/swift/taskgroup/3814884-spawn

【问题讨论】:

  • 我认为,async 可能已被弃用
  • @aheze 真的吗?那会很酷。不过,我看到的是 add 已被弃用,所以也许你正在考虑这个?
  • @Rob 哦不!我真的希望这会反过来。 async 的名字在这里大错特错。

标签: swift async-await spawn swift5.5


【解决方案1】:

SE-0304,告诉我们spawn 在第二次审核中更名为async:

  • TaskGroup.spawn 和 TaskGroup.spawnUnlessCancelled 已重命名为 TaskGroup.async 和 TaskGroup.asyncUnlessCancelled ,这将是它们的最终名称。这将命名与重命名的 async let 对齐,作为表示创建子任务的词。

斜体部分随后被删除,第三次审查再次重命名:

  • 将TaskGroup.async 和TaskGroup.asyncUnlessCancelled 重命名为TaskGroup.addTask 和TaskGroup.addTaskUnlessCancelled。这里的基本行为是我们正在向组中添加一个任务。 add 本身是不够的,因为我们没有添加值(可通过next() 访问),我们正在添加一个可通过next() 访问其值的任务。它还与使用 Task { ... } 并行创建顶级任务。

【讨论】:

  • 我会等着看这是否真的发生......第二次审查中有一些事情在测试版中没有发生。但我想他们会的。 :(
  • 好吧,他们将独立的async 更改为Task.init,但他们没有对TaskGroup async 做任何事情。我更喜欢spawn 或add....
  • 我相信你知道,现在是addTask。
  • 是的,我认为这样更好。
猜你喜欢
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
相关资源
最近更新 更多