2 个版本
使用旧的 Rust 2015
0.1.1 | 2015年11月29日 |
---|---|
0.1.0 | 2015年11月27日 |
15 在 #wait-group
23 每月下载量
4KB
waitout
Waitout 提供了一个简单的接口,用于跟踪和等待多个异步任务的完成。
api 文档
请在此处查找:这里.
安装
将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
waitout = "0.1"
用法
有时,为了高效地完成聚合任务,将独立任务异步地分摊出去是有用的。异步任务有时会被分阶段在不同的范围内进行,这使得很难监控它们的完成状态。一些语言有类似于 CountDownLatches 和 WaitGroups 的标准库接口来帮助解决这个问题。在 Rust 中没有类似的接口,因此 waitout 应运而生。
Waitout 是围绕几个 Rust 同步原语的一个简单包装,这使得分阶段任务完成更加直接。想法很简单,保持引用创建一个共享计数器,每当你希望等待的任务完成时,都会增加这个计数器。当一个任务完成时,递减这个计数器。当计数器达到 0 时,当前线程可以继续。
extern crate waitout;
use std::sync::Arc;
use std::thread;
use waitout::WaitGroup;
fn main() {
let wg = Arc::new(
WaitGroup::new(0)
);
for _ in 0..100 {
wg.add(1);
let wg2 = wg.clone();
thread::spawn(move|| {
thread::sleep_ms(2000);
wg2.done();
});
}
wg.wait();
println!("all set")
}
Doug Tangren (softprops) 2015