main/
main.rs

1use affinity::*;
2use std::error::Error;
3
4#[cfg(target_os = "windows")]
5fn bind_process() -> Result<(), Box<dyn Error>> {
6    // Sets the whole proccess affinity
7    println!("Binding process to cores : [0]");
8    println!("(This should overwrite threads affinities previously set)");
9    set_process_affinity(&[0])?;
10    println!("\tCurrent thread affinity : {:?}", get_thread_affinity()?);
11    println!("\tCurrent process affinity : {:?}", get_process_affinity()?);
12    println!("\tTotal cores : {}", get_core_num());
13    Ok(())
14}
15
16pub fn main() -> Result<(), Box<dyn Error>> {
17    println!("Total cores : {}", get_core_num());
18
19    let cores = (0..get_core_num()).step_by(2).collect::<Vec<usize>>();
20    println!("Binding thread to cores : {:?}", &cores);
21    set_thread_affinity(&cores)?;
22
23    let bound_cores = get_thread_affinity()?;
24    println!("\tCurrent thread affinity : {:?}", bound_cores);
25    println!("\tTotal cores : {}", get_core_num());
26
27    assert_eq!(bound_cores, cores.as_slice());
28
29    #[cfg(target_os = "windows")]
30    bind_process()?;
31
32    Ok(())
33}