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

Download history 2147/week @ 2024-04-29 2000/week @ 2024-05-06 1821/week @ 2024-05-13 1779/week @ 2024-05-20 2376/week @ 2024-05-27 1701/week @ 2024-06-03 1974/week @ 2024-06-10 2430/week @ 2024-06-17 2061/week @ 2024-06-24 1157/week @ 2024-07-01 1979/week @ 2024-07-08 2242/week @ 2024-07-15 1888/week @ 2024-07-22 1857/week @ 2024-07-29 1891/week @ 2024-08-05 2192/week @ 2024-08-12

每月下载量 8,057
45 个 Crates 中使用(直接使用 26 个)

Apache-2.0 或 MIT

13KB
116

easy-parallel

Build License Cargo Documentation

并行运行闭包。

这是一个简单的原始方法,用于批量创建线程并等待它们完成。线程可以借用主线程的局部变量。

示例

运行两个线程,递增一个数字

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 许可证的定义,应按上述方式双重许可,不附加任何额外的条款或条件。

无运行时依赖