#[inline(never)] fn tick(i: usize) { println!("[{:?}] tick {i}", std::thread::current().id()); } fn runner(s: isize) { for i in (0..10).step_by(s as usize) { tick(i); std::thread::sleep(std::time::Duration::from_millis(s as u64)); } } fn run(s: isize) -> std::thread::JoinHandle<()> { std::thread::spawn(move || runner(s)) } fn main() { let threads = [run(1), run(2)]; for handle in threads { handle.join().unwrap(); } }