use std::time::Instant;
use many_cpus::SystemHardware;
fn main() {
let processor_set = SystemHardware::current().processors();
let mut threads = Vec::with_capacity(processor_set.len());
for _ in 0..processor_set.len() {
let thread = std::thread::spawn(move || {
let start = Instant::now();
let mut x: u64 = 0;
loop {
for _ in 0..100_000 {
x = x.wrapping_add(1);
}
if start.elapsed().as_secs() > 10 {
println!("Thread finished after {x} iterations");
break;
}
}
});
threads.push(thread);
}
println!("Spawned {} threads", threads.len());
for thread in threads {
thread.join().unwrap();
}
println!("All threads have finished.");
}