Count in parallel with random sleep
TODO: It was mentioned to me that rand is blocking and thus this code is problematic. I need to understand that better and update the example if necessary.
#[tokio::main]
async fn main() {
println!("Start");
tokio::join!(
count("a", 10),
count("b", 10),
);
println!("End");
}
async fn count(which: &str, n: u32) {
for i in 0..n {
print(which,i).await;
}
}
async fn print(which: &str, n: u32) {
let random_int = rand::random::<u64>() % 11;
tokio::time::sleep(tokio::time::Duration::from_millis(random_int)).await;
println!("{which} {n} random: {random_int}");
}
[package]
name = "demo"
version = "0.1.0"
edition = "2024"
[dependencies]
rand = "0.9.2"
tokio = { version = "1.47.1", features = ["full"] }