1 个不稳定版本
0.1.0 | 2021 年 11 月 4 日 |
---|
#930 in 并发
6KB
54 行
此 crate 使将函数或闭包转换为两个对象变得容易:一个可以在线程池上运行的对象,以及其结果的 Future
。与现有解决方案不同,开始计算与轮询未来是独立的。它与用于实际计算的线程或线程池以及未来执行器完全独立。
入口点是 closure_future
。
示例
工作可以在线程上运行
# use std::time::Duration;
# use closure_future::closure_future;
# use pollster::block_on;
let (future, worker) = closure_future(|| {
// ... do some work and return a value ...
"Hello!"
});
std::thread::spawn(|| worker.run());
assert_eq!(block_on(future), Ok("Hello!"))
还可以使用 rayon 全局线程池,使用提供的辅助函数运行工作
# use std::time::Duration;
# use closure_future::spawn_rayon;
# use pollster::block_on;
let mut futures = Vec::new();
for i in 0..10 {
let future = spawn_rayon(move || {
// ... do some work and return a value ...
i
});
futures.push(future)
}
for (i,fut) in futures.into_iter().enumerate() {
assert_eq!(block_on(fut),Ok(i));
}
依赖关系
~62–340KB