dynpool 0.0.2

A thread manager that is lightweight, flexible, and rescalable.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use std::sync::atomic::{AtomicUsize, Ordering};

#[cfg(not(feature="nightly"))]
pub fn atomic_max(atom: &AtomicUsize, val: usize, ord: Ordering) -> usize {
    let mut prev = atom.load(ord);
    loop {
        match atom.compare_exchange_weak(prev, prev.max(val), ord, ord) {
            Ok(prev) => return prev,
            Err(next_prev) => prev = next_prev
        }
    }
}

#[cfg(feature="nightly")]
pub fn atomic_max(atom: &AtomicUsize, val: usize, ord: Ordering) -> usize {
    atom.fetch_max(val, ord)
}