10 个稳定版本
3.3.1 | 2023 年 9 月 25 日 |
---|---|
3.3.0 | 2023 年 4 月 7 日 |
3.2.0 | 2021 年 12 月 30 日 |
3.1.0 | 2020 年 7 月 22 日 |
1.0.1 | 2020 年 5 月 26 日 |
在并发类别中排名 309
每月下载量 8,057
在 45 个 Crates 中使用(直接使用 26 个)
13KB
116 行
easy-parallel
并行运行闭包。
这是一个简单的原始方法,用于批量创建线程并等待它们完成。线程可以借用主线程的局部变量。
示例
运行两个线程,递增一个数字
use easy_parallel::Parallel;
use std::sync::Mutex;
let mut m = Mutex::new(0);
Parallel::new()
.add(|| *m.lock().unwrap() += 1)
.add(|| *m.lock().unwrap() += 1)
.run();
assert_eq!(*m.get_mut().unwrap(), 2);
在不同线程上对向量中的每个数字进行平方
use easy_parallel::Parallel;
let v = vec![10, 20, 30];
let squares = Parallel::new()
.each(0..v.len(), |i| v[i] * v[i])
.run();
assert_eq!(squares, [100, 400, 900]);
计算数组中数字的总和
use easy_parallel::Parallel;
fn par_sum(v: &[i32]) -> i32 {
const THRESHOLD: usize = 2;
if v.len() <= THRESHOLD {
v.iter().copied().sum()
} else {
let half = (v.len() + 1) / 2;
let sums = Parallel::new().each(v.chunks(half), par_sum).run();
sums.into_iter().sum()
}
}
let v = [1, 25, -4, 10, 8];
assert_eq!(par_sum(&v), 40);
许可证
根据您的选择,许可如下
- Apache 许可证 2.0 版 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确说明,否则您有意提交的任何贡献,根据 Apache-2.0 许可证的定义,应按上述方式双重许可,不附加任何额外的条款或条件。