#parallel #thread

rustc-rayon

为 Rust 提供简单的工作窃取并行性 - rustc 的分支

9 个不稳定版本

0.5.0 2023 年 3 月 24 日
0.4.0 2022 年 5 月 27 日
0.3.2 2022 年 1 月 10 日
0.3.1 2021 年 3 月 11 日
0.1.1 2018 年 6 月 6 日

#125 in 并发

Download history 10951/week @ 2024-04-22 9313/week @ 2024-04-29 11092/week @ 2024-05-06 10485/week @ 2024-05-13 12045/week @ 2024-05-20 11380/week @ 2024-05-27 10504/week @ 2024-06-03 9927/week @ 2024-06-10 10522/week @ 2024-06-17 10911/week @ 2024-06-24 9599/week @ 2024-07-01 10890/week @ 2024-07-08 10934/week @ 2024-07-15 10613/week @ 2024-07-22 10650/week @ 2024-07-29 10636/week @ 2024-08-05

44,125 个月下载量
用于 61 个 Crates (7 直接)

MIT/Apache

1MB
22K SLoC

rustc-rayon

rustc-rayon 是 Rayon 的分支。Rayon 在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。有关详细信息,请参阅 LICENSE-APACHELICENSE-MIT。提交拉取请求表示同意这些许可条款。

许可证

rustc-rayon 是 Rayon 的分支。Rayon 根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款分发。有关详细信息,请参阅 LICENSE-APACHELICENSE-MIT。提交拉取请求即表示同意这些许可条款。


lib.rs:

数据并行库,可轻松将顺序计算转换为并行计算

Rayon 轻量级,便于将并行性引入现有代码。它保证无数据竞争的执行,并在运行时根据工作负载合理利用并行性。

如何使用 Rayon

使用 Rayon 有两种方式

  • 高级并行构造 是使用 Rayon 最简单的方法,通常也是最有效的方法。
    • 并行迭代器 可以轻松地将顺序迭代器转换为并行执行。
    • par_sort 方法可以并行地对 &mut [T] 切片(或向量)进行排序。
    • par_extend 可以用于有效地扩展由并行迭代器生成的集合。
  • 自定义任务 允许您自己将工作划分为并行任务。
    • 使用 join 来将任务划分为两部分。
    • 使用 scope 创建一个作用域,在其中可以创建任意数量的并行任务。
    • 可以使用 ThreadPoolBuilder 来创建自己的线程池或自定义全局线程池。

基本用法和 Rayon 预导入模块

首先,您需要将 rayon 添加到您的 Cargo.toml 文件中。

接下来,为了使用并行迭代器或其他高级方法,您需要导入几个特质。这些特质被包含在模块 rayon::prelude 中。建议您一次性导入所有这些特质,通过在每个使用 Rayon 方法的模块顶部添加 use rayon::prelude::* 来实现。

这些特质为您提供了访问 par_iter 方法的权限,该方法提供了许多迭代函数的并行实现,例如 mapfor_eachfilterfold 以及更多。

包布局

Rayon 扩展了标准库中许多类型的并行迭代器实现。Rayon 包中的模块与 std 本身相似:例如,Rayon 中的 option 模块包含并行迭代器用于 Option 类型,这在 stdoption 模块中可以找到。同样,Rayon 中的 collections 模块提供了从 std 中的 collections 类型到并行迭代器类型的支持。除非您需要显式命名迭代器类型,否则很少需要访问这些子模块。

无线程的目标

Rayon 对没有 std 线程实现的目标支持有限。有关其全局回退的更多信息,请参阅 rayon_core 文档。

还有其他问题吗?

请参阅 Rayon 常见问题解答

依赖关系

~685KB
~11K SLoC