proxide_parallel_rt/
lib.rs1use std::sync::atomic::{AtomicUsize, Ordering};
2
3static NUM_THREADS: AtomicUsize = AtomicUsize::new(1);
4
5pub fn set_num_threads(n: usize) {
6 NUM_THREADS.store(n.max(1), Ordering::Relaxed);
7}
8
9pub fn num_threads() -> usize {
10 NUM_THREADS.load(Ordering::Relaxed)
11}
12
13#[cfg(test)]
14mod tests {
15 use super::*;
16
17 #[test]
18 fn default_is_one() {
19 assert_eq!(num_threads(), 1);
20 }
21
22 #[test]
23 fn set_and_get() {
24 set_num_threads(4);
25 assert_eq!(num_threads(), 4);
26 set_num_threads(1);
27 }
28
29 #[test]
30 fn zero_clamps_to_one() {
31 set_num_threads(0);
32 assert_eq!(num_threads(), 1);
33 set_num_threads(1);
34 }
35}