amity 0.6.3

Concurrency algorithms
Documentation
pub use core::{
    cell::UnsafeCell,
    hint::spin_loop,
    mem::MaybeUninit,
    sync::atomic::{AtomicBool, AtomicPtr, AtomicU64, AtomicUsize, Ordering},
};

#[cfg(feature = "std")]
pub use std::thread::{Thread, current, park, yield_now};

#[inline]
pub fn with_atomic<T>(a: &mut AtomicU64, f: impl FnOnce(&mut u64) -> T) -> T {
    f(a.get_mut())
}

#[inline]
pub fn read_atomic(a: &mut AtomicU64) -> u64 {
    *a.get_mut()
}

#[inline]
pub fn write_atomic(a: &mut AtomicU64, v: u64) {
    *a.get_mut() = v;
}

#[inline]
pub unsafe fn write_cell<T>(a: &UnsafeCell<T>, value: T) {
    *a.get() = value;
}

#[inline]
pub unsafe fn read_init_cell<T>(a: &mut UnsafeCell<MaybeUninit<T>>) -> T {
    a.get_mut().assume_init_read()
}

pub use crate::{Mutex, RwLock};