diff options
| author | bors <bors@rust-lang.org> | 2014-03-17 05:17:02 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-03-17 05:17:02 -0700 |
| commit | 50e3aa31e2bd6faa9c64ab7c437096bcef5c5dc5 (patch) | |
| tree | 1207d9172601212740d746c8cf2b2b83ae4f76de /src/libstd | |
| parent | e4c91e6c7cfc03246a422576ab41ac74125fd3b8 (diff) | |
| parent | 13d73e99d6a88400da81ec6a1177a75a81ffe9ca (diff) | |
| download | rust-50e3aa31e2bd6faa9c64ab7c437096bcef5c5dc5.tar.gz rust-50e3aa31e2bd6faa9c64ab7c437096bcef5c5dc5.zip | |
auto merge of #12951 : cadencemarseille/rust/issue-12943-remove-AtomicFlag, r=alexcrichton
fixes #12943
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/sync/atomics.rs | 47 |
1 files changed, 6 insertions, 41 deletions
diff --git a/src/libstd/sync/atomics.rs b/src/libstd/sync/atomics.rs index b38a5aed16f..86efa0875dc 100644 --- a/src/libstd/sync/atomics.rs +++ b/src/libstd/sync/atomics.rs @@ -28,14 +28,6 @@ use option::{Option,Some,None}; use ops::Drop; /** - * A simple atomic flag, that can be set and cleared. The most basic atomic type. - */ -pub struct AtomicFlag { - priv v: int, - priv nopod: marker::NoPod -} - -/** * An atomic boolean type. */ pub struct AtomicBool { @@ -92,36 +84,11 @@ pub enum Ordering { SeqCst } -pub static INIT_ATOMIC_FLAG : AtomicFlag = AtomicFlag { v: 0, nopod: marker::NoPod }; pub static INIT_ATOMIC_BOOL : AtomicBool = AtomicBool { v: 0, nopod: marker::NoPod }; pub static INIT_ATOMIC_INT : AtomicInt = AtomicInt { v: 0, nopod: marker::NoPod }; pub static INIT_ATOMIC_UINT : AtomicUint = AtomicUint { v: 0, nopod: marker::NoPod }; pub static INIT_ATOMIC_U64 : AtomicU64 = AtomicU64 { v: 0, nopod: marker::NoPod }; -impl AtomicFlag { - - pub fn new() -> AtomicFlag { - AtomicFlag { v: 0, nopod: marker::NoPod} - } - - /** - * Clears the atomic flag - */ - #[inline] - pub fn clear(&mut self, order: Ordering) { - unsafe {atomic_store(&mut self.v, 0, order)} - } - - /** - * Sets the flag if it was previously unset, returns the previous value of the - * flag. - */ - #[inline] - pub fn test_and_set(&mut self, order: Ordering) -> bool { - unsafe { atomic_compare_and_swap(&mut self.v, 0, 1, order) > 0 } - } -} - impl AtomicBool { pub fn new(v: bool) -> AtomicBool { AtomicBool { v: if v { 1 } else { 0 }, nopod: marker::NoPod } @@ -539,13 +506,13 @@ mod test { use super::*; #[test] - fn flag() { - let mut flg = AtomicFlag::new(); - assert!(!flg.test_and_set(SeqCst)); - assert!(flg.test_and_set(SeqCst)); + fn bool_() { + let mut a = AtomicBool::new(false); + assert_eq!(a.compare_and_swap(false, true, SeqCst), false); + assert_eq!(a.compare_and_swap(false, true, SeqCst), true); - flg.clear(SeqCst); - assert!(!flg.test_and_set(SeqCst)); + a.store(false, SeqCst); + assert_eq!(a.compare_and_swap(false, true, SeqCst), false); } #[test] @@ -595,7 +562,6 @@ mod test { assert_eq!(a.load(SeqCst),false); } - static mut S_FLAG : AtomicFlag = INIT_ATOMIC_FLAG; static mut S_BOOL : AtomicBool = INIT_ATOMIC_BOOL; static mut S_INT : AtomicInt = INIT_ATOMIC_INT; static mut S_UINT : AtomicUint = INIT_ATOMIC_UINT; @@ -603,7 +569,6 @@ mod test { #[test] fn static_init() { unsafe { - assert!(!S_FLAG.test_and_set(SeqCst)); assert!(!S_BOOL.load(SeqCst)); assert!(S_INT.load(SeqCst) == 0); assert!(S_UINT.load(SeqCst) == 0); |
