diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-11-16 19:54:28 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-11-18 01:24:21 +0300 |
| commit | 7e2ffc7090a70fe8c77a0e03fcec3cb1387141f2 (patch) | |
| tree | 63f67955eac7b8d88a7a771a958948500d4d9f15 /src/libstd/sync | |
| parent | 52acc05f6398d70e8cc506e19bb9fefbed7368ac (diff) | |
| download | rust-7e2ffc7090a70fe8c77a0e03fcec3cb1387141f2.tar.gz rust-7e2ffc7090a70fe8c77a0e03fcec3cb1387141f2.zip | |
Add missing annotations and some tests
Diffstat (limited to 'src/libstd/sync')
| -rw-r--r-- | src/libstd/sync/barrier.rs | 1 | ||||
| -rw-r--r-- | src/libstd/sync/mod.rs | 11 | ||||
| -rw-r--r-- | src/libstd/sync/mpsc/mod.rs | 6 | ||||
| -rw-r--r-- | src/libstd/sync/mpsc/mpsc_queue.rs | 1 | ||||
| -rw-r--r-- | src/libstd/sync/mutex.rs | 4 | ||||
| -rw-r--r-- | src/libstd/sync/rwlock.rs | 4 |
6 files changed, 25 insertions, 2 deletions
diff --git a/src/libstd/sync/barrier.rs b/src/libstd/sync/barrier.rs index 8360620c345..4df6ca5f0b8 100644 --- a/src/libstd/sync/barrier.rs +++ b/src/libstd/sync/barrier.rs @@ -46,6 +46,7 @@ struct BarrierState { /// /// Currently this opaque structure only has one method, `.is_leader()`. Only /// one thread will receive a result that will return `true` from this function. +#[stable(feature = "rust1", since = "1.0.0")] pub struct BarrierWaitResult(bool); impl Barrier { diff --git a/src/libstd/sync/mod.rs b/src/libstd/sync/mod.rs index 4544f30d4f4..e1b7930b6d8 100644 --- a/src/libstd/sync/mod.rs +++ b/src/libstd/sync/mod.rs @@ -17,17 +17,28 @@ #![stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "rust1", since = "1.0.0")] pub use alloc::arc::{Arc, Weak}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::sync::atomic; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::barrier::{Barrier, BarrierWaitResult}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::condvar::{Condvar, StaticCondvar, WaitTimeoutResult, CONDVAR_INIT}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::mutex::MUTEX_INIT; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::mutex::{Mutex, MutexGuard, StaticMutex}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::once::{Once, ONCE_INIT}; +#[stable(feature = "rust1", since = "1.0.0")] pub use sys_common::poison::{PoisonError, TryLockError, TryLockResult, LockResult}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::rwlock::{RwLockReadGuard, RwLockWriteGuard}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::rwlock::{RwLock, StaticRwLock, RW_LOCK_INIT}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::semaphore::{Semaphore, SemaphoreGuard}; pub mod mpsc; diff --git a/src/libstd/sync/mpsc/mod.rs b/src/libstd/sync/mpsc/mod.rs index a0d0147296a..e87ae19c583 100644 --- a/src/libstd/sync/mpsc/mod.rs +++ b/src/libstd/sync/mpsc/mod.rs @@ -272,6 +272,7 @@ use mem; use cell::UnsafeCell; use marker::Reflect; +#[unstable(feature = "mpsc_select", issue = "27800")] pub use self::select::{Select, Handle}; use self::select::StartResult; use self::select::StartResult::*; @@ -295,6 +296,7 @@ pub struct Receiver<T> { // The receiver port can be sent from place to place, so long as it // is not used to receive non-sendable things. +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: Send> Send for Receiver<T> { } /// An iterator over messages on a receiver, this iterator will block @@ -322,6 +324,7 @@ pub struct Sender<T> { // The send port can be sent from place to place, so long as it // is not used to send non-sendable things. +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: Send> Send for Sender<T> { } /// The sending-half of Rust's synchronous channel type. This half can only be @@ -331,8 +334,10 @@ pub struct SyncSender<T> { inner: Arc<UnsafeCell<sync::Packet<T>>>, } +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: Send> Send for SyncSender<T> {} +#[stable(feature = "rust1", since = "1.0.0")] impl<T> !Sync for SyncSender<T> {} /// An error returned from the `send` function on channels. @@ -954,6 +959,7 @@ impl<'a, T> IntoIterator for &'a Receiver<T> { fn into_iter(self) -> Iter<'a, T> { self.iter() } } +#[stable(feature = "receiver_into_iter", since = "1.1.0")] impl<T> Iterator for IntoIter<T> { type Item = T; fn next(&mut self) -> Option<T> { self.rx.recv().ok() } diff --git a/src/libstd/sync/mpsc/mpsc_queue.rs b/src/libstd/sync/mpsc/mpsc_queue.rs index e4eba3d3d20..6a6c19cfcc3 100644 --- a/src/libstd/sync/mpsc/mpsc_queue.rs +++ b/src/libstd/sync/mpsc/mpsc_queue.rs @@ -133,7 +133,6 @@ impl<T> Queue<T> { } } -#[stable(feature = "rust1", since = "1.0.0")] impl<T> Drop for Queue<T> { fn drop(&mut self) { unsafe { diff --git a/src/libstd/sync/mutex.rs b/src/libstd/sync/mutex.rs index 48631bfc5f9..5677c5538c4 100644 --- a/src/libstd/sync/mutex.rs +++ b/src/libstd/sync/mutex.rs @@ -125,8 +125,9 @@ pub struct Mutex<T: ?Sized> { // these are the only places where `T: Send` matters; all other // functionality works fine on a single thread. +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: ?Sized + Send> Send for Mutex<T> { } - +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: ?Sized + Send> Sync for Mutex<T> { } /// The static mutex type is provided to allow for static allocation of mutexes. @@ -175,6 +176,7 @@ pub struct MutexGuard<'a, T: ?Sized + 'a> { __poison: poison::Guard, } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: ?Sized> !marker::Send for MutexGuard<'a, T> {} /// Static initialization of a mutex. This constant can be used to initialize diff --git a/src/libstd/sync/rwlock.rs b/src/libstd/sync/rwlock.rs index 750c9e30c5c..4c236d21545 100644 --- a/src/libstd/sync/rwlock.rs +++ b/src/libstd/sync/rwlock.rs @@ -71,7 +71,9 @@ pub struct RwLock<T: ?Sized> { data: UnsafeCell<T>, } +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: ?Sized + Send + Sync> Send for RwLock<T> {} +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: ?Sized + Send + Sync> Sync for RwLock<T> {} /// Structure representing a statically allocated RwLock. @@ -122,6 +124,7 @@ pub struct RwLockReadGuard<'a, T: ?Sized + 'a> { __data: &'a UnsafeCell<T>, } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: ?Sized> !marker::Send for RwLockReadGuard<'a, T> {} /// RAII structure used to release the exclusive write access of a lock when @@ -134,6 +137,7 @@ pub struct RwLockWriteGuard<'a, T: ?Sized + 'a> { __poison: poison::Guard, } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: ?Sized> !marker::Send for RwLockWriteGuard<'a, T> {} impl<T> RwLock<T> { |
