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 并发
44,125 个月下载量
用于 61 个 Crates (7 直接)
1MB
22K SLoC
rustc-rayon
rustc-rayon 是 Rayon 的分支。Rayon 在 MIT 许可证和 Apache 许可证(版本 2.0)的条款下分发。有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。提交拉取请求表示同意这些许可条款。
许可证
rustc-rayon 是 Rayon 的分支。Rayon 根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款分发。有关详细信息,请参阅 LICENSE-APACHE 和 LICENSE-MIT。提交拉取请求即表示同意这些许可条款。
lib.rs:
数据并行库,可轻松将顺序计算转换为并行计算
Rayon 轻量级,便于将并行性引入现有代码。它保证无数据竞争的执行,并在运行时根据工作负载合理利用并行性。
如何使用 Rayon
使用 Rayon 有两种方式
- 高级并行构造 是使用 Rayon 最简单的方法,通常也是最有效的方法。
- 并行迭代器 可以轻松地将顺序迭代器转换为并行执行。
ParallelIteratortrait 定义了适用于所有并行迭代器的一般方法。IndexedParallelIteratortrait 为支持随机访问的迭代器添加了方法。
par_sort方法可以并行地对&mut [T]切片(或向量)进行排序。par_extend可以用于有效地扩展由并行迭代器生成的集合。
- 并行迭代器 可以轻松地将顺序迭代器转换为并行执行。
- 自定义任务 允许您自己将工作划分为并行任务。
- 使用
join来将任务划分为两部分。 - 使用
scope创建一个作用域,在其中可以创建任意数量的并行任务。 - 可以使用
ThreadPoolBuilder来创建自己的线程池或自定义全局线程池。
- 使用
基本用法和 Rayon 预导入模块
首先,您需要将 rayon 添加到您的 Cargo.toml 文件中。
接下来,为了使用并行迭代器或其他高级方法,您需要导入几个特质。这些特质被包含在模块 rayon::prelude 中。建议您一次性导入所有这些特质,通过在每个使用 Rayon 方法的模块顶部添加 use rayon::prelude::* 来实现。
这些特质为您提供了访问 par_iter 方法的权限,该方法提供了许多迭代函数的并行实现,例如 map、for_each、filter、fold 以及更多。
包布局
Rayon 扩展了标准库中许多类型的并行迭代器实现。Rayon 包中的模块与 std 本身相似:例如,Rayon 中的 option 模块包含并行迭代器用于 Option 类型,这在 std 的 option 模块中可以找到。同样,Rayon 中的 collections 模块提供了从 std 中的 collections 类型到并行迭代器类型的支持。除非您需要显式命名迭代器类型,否则很少需要访问这些子模块。
无线程的目标
Rayon 对没有 std 线程实现的目标支持有限。有关其全局回退的更多信息,请参阅 rayon_core 文档。
还有其他问题吗?
请参阅 Rayon 常见问题解答。
依赖关系
~685KB
~11K SLoC