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 最简单的方法,通常也是最有效的方法。
- 并行迭代器 可以轻松地将顺序迭代器转换为并行执行。
ParallelIterator
trait 定义了适用于所有并行迭代器的一般方法。IndexedParallelIterator
trait 为支持随机访问的迭代器添加了方法。
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