pub struct Mutex<T> where
T: ?Sized, { /* private fields */ }
Expand description
A futures-aware mutex.
Fairness
This mutex provides no fairness guarantees. Tasks may not acquire the mutex in the order that they requested the lock, and it’s possible for a single task which repeatedly takes the lock to starve other tasks, which may be left waiting indefinitely.
Implementations
Attempt to acquire the lock immediately.
If the lock is currently held, this will return None
.
pub fn lock(&self) -> MutexLockFuture<'_, T>ⓘNotable traits for MutexLockFuture<'a, T>impl<'a, T> Future for MutexLockFuture<'a, T> where
T: ?Sized, type Output = MutexGuard<'a, T>;
pub fn lock(&self) -> MutexLockFuture<'_, T>ⓘNotable traits for MutexLockFuture<'a, T>impl<'a, T> Future for MutexLockFuture<'a, T> where
T: ?Sized, type Output = MutexGuard<'a, T>;
Notable traits for MutexLockFuture<'a, T>
impl<'a, T> Future for MutexLockFuture<'a, T> where
T: ?Sized, type Output = MutexGuard<'a, T>;
Acquire the lock asynchronously.
This method returns a future that will resolve once the lock has been successfully acquired.
Returns a mutable reference to the underlying data.
Since this call borrows the Mutex
mutably, no actual locking needs to
take place – the mutable borrow statically guarantees no locks exist.
Examples
use futures::lock::Mutex;
let mut mutex = Mutex::new(0);
*mutex.get_mut() = 10;
assert_eq!(*mutex.lock().await, 10);