Struct lock_api::RwLockReadGuard[][src]

#[must_use]
pub struct RwLockReadGuard<'a, R: RawRwLock + 'a, T: ?Sized + 'a> { /* fields omitted */ }

RAII structure used to release the shared read access of a lock when dropped.

Methods

impl<'a, R: RawRwLock + 'a, T: ?Sized + 'a> RwLockReadGuard<'a, R, T>
[src]

Returns a reference to the original reader-writer lock object.

Make a new MappedRwLockReadGuard for a component of the locked data.

This operation cannot fail as the RwLockReadGuard passed in already locked the data.

This is an associated function that needs to be used as RwLockReadGuard::map(...). A method would interfere with methods of the same name on the contents of the locked data.

Executes the given function with the RwLock unlocked.

This is safe because &mut guarantees that there exist no other references to the data protected by the RwLock.

impl<'a, R: RawRwLockFair + 'a, T: ?Sized + 'a> RwLockReadGuard<'a, R, T>
[src]

Unlocks the RwLock using a fair unlock protocol.

By default, RwLock is unfair and allow the current thread to re-lock the RwLock before another has the chance to acquire the lock, even if that thread has been blocked on the RwLock for a long time. This is the default because it allows much higher throughput as it avoids forcing a context switch on every RwLock unlock. This can result in one thread acquiring a RwLock many more times than other threads.

However in some cases it can be beneficial to ensure fairness by forcing the lock to pass on to a waiting thread if there is one. This is done by using this method instead of dropping the RwLockReadGuard normally.

Executes the given function with the RwLock unlocked using a fair unlock protocol.

This is safe because &mut guarantees that there exist no other references to the data protected by the RwLock.

Temporarily yields the RwLock to a waiting thread if there is one.

This method is functionally equivalent to calling unlock_fair followed by read, however it can be much more efficient in the case where there are no waiting threads.

Trait Implementations

impl<'a, R: RawRwLock + 'a, T: ?Sized + Sync + 'a> Sync for RwLockReadGuard<'a, R, T>
[src]

impl<'a, R: RawRwLock + 'a, T: ?Sized + 'a> Deref for RwLockReadGuard<'a, R, T>
[src]

The resulting type after dereferencing.

Dereferences the value.

impl<'a, R: RawRwLock + 'a, T: ?Sized + 'a> Drop for RwLockReadGuard<'a, R, T>
[src]

Executes the destructor for this type. Read more

Auto Trait Implementations

impl<'a, R, T: ?Sized> Send for RwLockReadGuard<'a, R, T> where
    R: Sync,
    T: Send + Sync,
    <R as RawRwLock>::GuardMarker: Send