4 个版本

0.1.3 2021 年 7 月 14 日
0.1.2 2021 年 7 月 9 日
0.1.1 2021 年 7 月 9 日
0.1.0 2021 年 7 月 8 日

808并发

MIT 许可证

38KB
223

Lagoon

Crates.io version docs.rs

Lagoon 是一个线程池库,旨在解决现有线程池库中的许多问题。

示例

Lagoon 的作用域作业可用于简单的类似 rayon 的数据并行。

// A vector of the numbers 0 to 99
let mut data = (0..100).collect::<Vec<u32>>();

lagoon::ThreadPool::default().scoped(|s| {
    // For each element in the vector...
    for x in data.iter_mut() {
        // ...spawn a job that squares that element
        s.run(move || *x *= *x);
    }
});

// Demonstrate that the elements have indeed been squared
assert!((0..100)
    .map(|x| x * x)
    .zip(data.into_iter())
    .all(|(x, y)| x == y));

功能

  • 作用域作业:安全地启动具有对其父作用域访问权限的作业!
  • 作业句柄:在作业完成时接收作业的结果,或等待其完成!
  • 全局池:按使用付费的全局线程池,避免依赖项争夺资源!
  • 自定义线程属性:指定线程名称、堆栈大小等。

计划中的功能

  • 异步作业等待支持:在异步上下文中使用线程池!

性能

Lagoon 具有非常具有竞争力的性能。以下是在 AMD Ryzen 7 3700x(16 个线程)上运行的每个线程池库启动新池、执行 100,000 个简单作业以及完成执行(即:越小越好)所需的时间,与常用替代库相比。

Benchmark, demonstrating Lagoon's performance compared to other thread pool crates

Spawning 100000 trivial tasks/lagoon     time:   [15.124 ms 16.437 ms 17.871 ms]
Spawning 100000 trivial tasks/threadpool time:   [59.108 ms 59.549 ms 59.989 ms]
Spawning 100000 trivial tasks/uvth       time:   [11.494 ms 12.598 ms 13.750 ms]
Spawning 100000 trivial tasks/rusty_pool time:   [40.203 ms 44.778 ms 49.612 ms]

基准测试在 AMD Ryzen 7 3700x(16 个线程)上运行。

许可证

Lagoon 在主仓库中根据 MIT 许可证(见 LICENSE)授权。

依赖项

~590KB