use avx_http::runtime;
use std::time::Duration;
async fn delayed_print(msg: &str, delay_ms: u64) {
println!("[START] {}", msg);
runtime::sleep(Duration::from_millis(delay_ms)).await;
println!("[DONE] {} (after {}ms)", msg, delay_ms);
}
async fn compute_task(id: usize) {
println!("Task {} starting...", id);
for i in 0..3 {
println!("Task {} - iteration {}", id, i);
runtime::sleep(Duration::from_millis(100)).await;
}
println!("Task {} completed!", id);
}
async fn parallel_tasks() {
println!("\n=== Parallel Task Execution ===\n");
runtime::spawn(compute_task(1));
runtime::spawn(compute_task(2));
runtime::spawn(compute_task(3));
runtime::sleep(Duration::from_secs(2)).await;
}
async fn timer_cascade() {
println!("\n=== Timer Cascade Test ===\n");
delayed_print("Quick task (10ms)", 10).await;
delayed_print("Medium task (100ms)", 100).await;
delayed_print("Slow task (500ms)", 500).await;
}
async fn main_async() {
println!("AVX-HTTP Async Runtime Demo");
println!("============================\n");
timer_cascade().await;
parallel_tasks().await;
println!("\n=== All tasks completed! ===");
}
fn main() {
runtime::block_on(main_async());
}