Struct guardian::ArcMutexGuardian
source · pub struct ArcMutexGuardian<T: 'static> { /* private fields */ }
Expand description
An RAII implementation of a “scoped lock” of a mutex. When this structure is dropped (falls out
of scope), the lock will be unlocked. Keeps a handle to an Arc
so that the lock is not
dropped until the guard is.
The data protected by the mutex can be access through this guard via its Deref
and DerefMut
implementations.
Implementations§
source§impl<T> ArcMutexGuardian<T>
impl<T> ArcMutexGuardian<T>
sourcepub fn take(handle: Arc<Mutex<T>>) -> LockResult<ArcMutexGuardian<T>>
pub fn take(handle: Arc<Mutex<T>>) -> LockResult<ArcMutexGuardian<T>>
Acquires a mutex, blocking the current thread until it is able to do so.
This function will block the local thread until it is available to acquire the mutex. Upon
returning, the thread is the only thread with the mutex held. An RAII guardian is returned
to allow scoped unlock of the lock. When the guard goes out of scope, the mutex will be
unlocked. The guardian also holds a strong reference to the lock’s Arc
, which is dropped
when the guard is.
§Errors
If another user of this mutex panicked while holding the mutex, then this call will return an error once the mutex is acquired.
sourcepub fn try_take(
handle: Arc<Mutex<T>>,
) -> Option<LockResult<ArcMutexGuardian<T>>>
pub fn try_take( handle: Arc<Mutex<T>>, ) -> Option<LockResult<ArcMutexGuardian<T>>>
Attempts to acquire this lock.
If the lock could not be acquired at this time, then None
is returned.
Otherwise, an RAII guard is returned. The lock will be unlocked when the guard is dropped.
The guardian also holds a strong reference to the lock’s Arc
, which is dropped
when the guard is.
This function does not block.