7 unstable releases (3 breaking)
0.4.1 | Mar 19, 2021 |
---|---|
0.4.0 | Mar 17, 2021 |
0.3.1 | Mar 14, 2021 |
0.2.1 | Mar 13, 2021 |
0.1.0 | Mar 13, 2021 |
#2067 in Asynchronous
14KB
227 lines
taskwait
Runtime agnostic way of waiting for async tasks.
Features
- Done: Support for golang's
WaitGroup.Add
&WaitGroup.Done
- Done: Support for RAII based
done()
ing the task i.e. callingdone()
on drop. - Done: Mixing of both
add
,done
and RAII semantics. - Done: Reuse the same taskgroup for multiple checkpoints.
Example
Using 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;
Using 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;
Dependencies
~530–710KB
~14K SLoC