Struct Mutex
pub struct Mutex<T>where
T: ?Sized,{ /* private fields */ }
Expand description
An asynchronous Mutex
-like type.
This type acts similarly to std::sync::Mutex
, with two major
differences: lock
is an async method so does not block, and the lock
guard is designed to be held across .await
points.
Tokio’s Mutex operates on a guaranteed FIFO basis.
This means that the order in which tasks call the lock
method is
the exact order in which they will acquire the lock.
§Which kind of mutex should you use?
Contrary to popular belief, it is ok and often preferred to use the ordinary
Mutex
from the standard library in asynchronous code.
The feature that the async mutex offers over the blocking mutex is the
ability to keep it locked across an .await
point. This makes the async
mutex more expensive than the blocking mutex, so the blocking mutex should
be preferred in the cases where it can be used. The primary use case for the
async mutex is to provide shared mutable access to IO resources such as a
database connection. If the value behind the mutex is just data, it’s
usually appropriate to use a blocking mutex such as the one in the standard
library or