Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

22 Commits

Repository files navigation

Affinity

Build Statuscrates.iomioLines of Code

This crate provides a consistent way to set core affinity for currently running threads and processes.

Usage

use affinity::*;fnbind_even_cores(){// Select every second corelet cores:Vec<usize> = (0..get_core_num()).step_by(2).collect();println!("Binding thread to cores : {:?}",&cores);// Output : "Binding thread to cores : [0, 2, 4, 6]"set_thread_affinity(&cores).unwrap();println!("Current thread affinity : {:?}", get_thread_affinity().unwrap());// Output : "Current thread affinity : [0, 2, 4, 6]"}

Complete example here.

Features

  • Bind to multiple cores
  • Return list of currently bound cores
  • Reliably get number of cores (uses num_cpus)
  • Allow caller to handle errors
  • Supports affinity inheritance for new child processes on Windows (through set_process_affinity())

Platforms

Currently only tested on :

  • Windows
  • Linux (Arch x64)

License

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Set process and thread affinity in your Rust programs !

Resources

Stars

32 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages