Add AtomicUint newtype

This commit is contained in:
James Miller 2013-05-21 17:31:24 +12:00 committed by Brian Anderson
parent 8072690414
commit 6d8d73cfc4

View file

@ -205,6 +205,26 @@ extern {
fn rust_unlock_little_lock(lock: rust_little_lock);
}
/* *********************************************************************/
//FIXME: #5042 This should be replaced by proper atomic type
pub struct AtomicUint(uint);
pub impl AtomicUint {
fn load(&self) -> uint {
unsafe { intrinsics::atomic_load(cast::transmute(self)) as uint }
}
fn store(&mut self, val:uint) {
unsafe { intrinsics::atomic_store(cast::transmute(self), val as int); }
}
fn add(&mut self, val:int) -> uint {
unsafe { intrinsics::atomic_xadd(cast::transmute(self), val as int) as uint }
}
fn cas(&self, old:uint, new:uint) -> uint {
unsafe { intrinsics::atomic_cxchg(cast::transmute(self), old as int, new as int) as uint }
}
}
#[cfg(test)]
mod tests {
use comm;