4个版本
0.0.4 | 2022年4月6日 |
---|---|
0.0.3 | 2020年12月15日 |
0.0.2 | 2020年12月14日 |
0.0.1 | 2020年12月14日 |
#1012 in 数据结构
11KB
243 代码行
用于启动和等待任务组的类型。
此crate提供TaskCollection,用于分组启动的任务。TaskCollection类型是通过Spawner实现创建的。通过TaskCollections的spawn
方法启动的任务将以最小的开销进行跟踪。《code>await TaskCollection将等待直到该集合中启动的所有任务都完成。
以下示例显示了如何使用TaskCollection等待启动的任务完成
fn main() {
let runtime = tokio::runtime::Runtime::new().unwrap();
let (tx, mut rx) = mpsc::unbounded::<u64>();
runtime.spawn(async move {
(0..10).for_each(|v| {
tx.unbounded_send(v).expect("Failed to send");
})
});
runtime.block_on(async {
let collection = TaskCollection::new(&runtime);
while let Some(val) = rx.next().await {
collection.spawn(async move {
// Simulate some async work
tokio::time::sleep(Duration::from_secs(val)).await;
println!("Value {}", val);
});
}
collection.await;
println!("All values printed");
});
}
依赖项
~0.5–14MB
~136K SLoC