#thread-pool #async #cpu-task

futures-cputask

将同步 CPU 密集型任务转换为 futures

2 个版本

0.3.0 2019年11月7日
0.3.0-alpha.192019年10月22日

#1383 in 异步

MIT/Apache

11KB
155

futures-cputask

此库允许您在辅助线程池上运行长时间运行的 CPU 密集型任务,并接收一个您可以等待的未来。

特性

  • 使用 Futures 0.3.0

  • 支持 Async/Await

  • 在辅助线程池上运行任务以避免阻塞主执行器线程之一

  • 支持使用各自的 cargo 功能从 threadpooluvth 使用它们的线程池

  • 具有允许与其他线程池实现互操作的 trait

  • 包含一个可选的自定义属性 async_task,将常规函数转换为异步函数

    (注意:目前此功能仅与 threadpooluvth 线程池一起工作)

使用方法

将此添加到您的 Cargo.toml

futures-cputask = "0.3.0"

如果您想使用自定义属性,请添加此内容

[dependencies.futures-cputask]
version = "0.3.0"
features = ["derive"]

示例

use futures_cputask::async_task;

#[async_task]
fn long_running_task() -> i64 {
    (0..100_000_000).fold(0i64, |a, b| a.wrapping_add(b))
}

许可证

根据您的选择,许可如下

贡献

除非您明确声明,否则任何有意提交以包含在作品中的贡献,根据 Apache-2.0 许可证的定义,应如上所述双许可,不附加任何额外条款或条件。

依赖关系

~1.8–2.5MB
~45K SLoC