18 releases

Uses old Rust 2015

0.8.3 Mar 1, 2025
0.8.1 Aug 3, 2023
0.8.0 Jan 26, 2023
0.7.6 Dec 1, 2022
0.5.9 Oct 10, 2017

#9 in Hardware support

Download history 136992/week @ 2024-12-17 43991/week @ 2024-12-24 108052/week @ 2024-12-31 189874/week @ 2025-01-07 172608/week @ 2025-01-14 168821/week @ 2025-01-21 166764/week @ 2025-01-28 203045/week @ 2025-02-04 185945/week @ 2025-02-11 206883/week @ 2025-02-18 233131/week @ 2025-02-25 231971/week @ 2025-03-04 215112/week @ 2025-03-11 219683/week @ 2025-03-18 225398/week @ 2025-03-25 214144/week @ 2025-04-01

921,783 downloads per month
Used in 275 crates (104 directly)

MIT/Apache

22KB
533 lines

core_affinity_rs is a Rust crate for managing CPU affinities. It currently supports Linux, Mac OSX, and Windows.

Documentation

Example

This example shows how create a thread for each available processor and pin each thread to its corresponding processor.

extern crate core_affinity;

use std::thread;

// Retrieve the IDs of all cores on which the current
// thread is allowed to run.
// NOTE: If you want ALL the possible cores, you should
// use num_cpus.
let core_ids = core_affinity::get_core_ids().unwrap();

// Create a thread for each active CPU core.
let handles = core_ids.into_iter().map(|id| {
    thread::spawn(move || {
        // Pin this thread to a single CPU core.
        let res = core_affinity::set_for_current(id);
        if (res) {
          // Do more work after this.
        }
    })
}).collect::<Vec<_>>();

for handle in handles.into_iter() {
    handle.join().unwrap();
}

Platforms

core_affinity_rs should work on Linux, Windows, Mac OSX, FreeBSD, NetBSD, and Android.

Dependencies

~28–250KB