30 lines
665 B
Rust
30 lines
665 B
Rust
use std::time::Duration;
|
|
|
|
use comrade::{job::LabelPendingTaskIterator, service::ServiceManager, worker};
|
|
|
|
#[worker(5)]
|
|
pub fn wait_work(i: u64) -> u64 {
|
|
std::thread::sleep(Duration::from_secs(i));
|
|
i
|
|
}
|
|
|
|
fn main() {
|
|
let mut s = ServiceManager::new().mode(comrade::service::ServiceMode::Decay);
|
|
s = wait_work_init(s);
|
|
|
|
let s = s.spawn();
|
|
|
|
let mut pending = Vec::new();
|
|
|
|
for i in 0..5 {
|
|
pending.push((i, wait_work_async(rand::random_range(0..5))));
|
|
}
|
|
|
|
for (res, label) in LabelPendingTaskIterator(pending) {
|
|
println!("Got value back {res:?} for {label:?}");
|
|
}
|
|
|
|
wait_work_shutdown();
|
|
|
|
s.join().unwrap();
|
|
}
|