32bits platforms

This commit is contained in:
Paul Masurel
2019-01-23 13:21:31 +09:00
parent 1acfb2ebb5
commit 74f70a5c2c

View File

@@ -28,20 +28,20 @@ mod archicture_impl {
use std::sync::atomic::Ordering;
/// Under other architecture, we rely on a mutex.
use std::sync::Mutex;
use std::sync::RwLock;
#[derive(Default)]
pub struct AtomicU64Ersatz(Mutex<u64>);
pub struct AtomicU64Ersatz(RwLock<u64>);
impl AtomicU64Ersatz {
pub fn new(first_opstamp: u64) -> AtomicU64Ersatz {
AtomicU64Ersatz(AtomicUsize::new(first_opstamp))
AtomicU64Ersatz(RwLock::new(first_opstamp))
}
pub fn fetch_add(&self, val: u64, _order: Ordering) -> u64 {
let lock = self.0.lock().unwrap();
pub fn fetch_add(&self, incr: u64, _order: Ordering) -> u64 {
let mut lock = self.0.write().unwrap();
let previous_val = *lock;
*lock = previous_val + 1;
*lock = previous_val + incr;
previous_val
}
}