7个不稳定版本 (3个破坏性变更)
0.4.1 | 2021年3月19日 |
---|---|
0.4.0 | 2021年3月17日 |
0.3.1 | 2021年3月14日 |
0.2.1 | 2021年3月13日 |
0.1.0 | 2021年3月13日 |
#1752 在 异步
14KB
227 行
taskwait
以运行时无关的方式等待异步任务。
功能
- 完成:支持golang的
WaitGroup.Add
和WaitGroup.Done
- 完成:支持基于RAII的
done()
任务,即在drop时调用done()
- 完成:混合了
add
、done
和RAII语义。 - 完成:重复使用相同的taskgroup进行多个检查点。
示例
使用add & done
use taskwait::TaskGroup;
let tg = TaskGroup::();
for _ in 0..10 {
tg.add();
let tg_c = tg.clone();
tokio::spawn(async move{
...
tg_c.done();
})
}
tg.wait().await;
使用add & add_work
use taskwait::TaskGroup;
let tg = TaskGroup::();
for _ in 0..10 {
let work = tg.add_work(1); // Increment counter
tokio::spawn(async move{
let _work = work; // done() will be called when this is dropped
...
})
}
tg.wait().await;
依赖项
~715KB
~14K SLoC