借助 Swift 的结构化并发,我们可以优雅而无缝地表达正确的异步代码。
然而,以一种任何人都能轻松使用,并且可以在工作负载和平台之间相对良好地扩展的方式来并行化代码执行仍然不是一件容易的事。从手表到拥有 128 个核心的 Linux 服务器。
这个库的目标不是提供异步版本的 map
、forEach
等。 它的目标是在异步版本的 map
、forEach
等中并行化代码执行。
它本质上是极简主义的,只提供像 map
和 forEach
这样的顶级函数。
这个包支持任何第一方的 Swift 平台。 1.0.0 版本兼容 Swift 6。旧版本兼容 Swift 5.7 及更高版本。
这个库在 Linux、Windows 和其他非 Apple 平台上实际上非常有用。
经过充分测试。在 Infomaniak 用纯 Swift 编写的应用程序中广泛使用。
concurrentForEach
Collection
,以便对每个元素执行一个任务。concurrentMap
concurrentCompactMap
asyncForEach
concurrentForEach(customConcurrency: 1)
的简写形式Collection
,以便对每个元素执行一个异步任务。asyncMap
concurrentMap(customConcurrency: 1)
的简写形式asyncCompactMap
concurrentCompactMap(customConcurrency: 1)
的简写形式asyncReduce
一种启发式算法会为您确定一个并行度,但可以自定义。 我们建议在使用网络调用时坚持使用固定的并行度(1-4左右)。
这目前在生产代码中运行,现在与 Swift 6 兼容。
这不使用 Task.yield()
。 根据您自己的工作负载,自行决定是否实现让步。