Struct RwLock
pub struct RwLock<T>where
T: ?Sized,{ /* private fields */ }
Expand description
An asynchronous reader-writer lock.
This type of lock allows a number of readers or at most one writer at any point in time. The write portion of this lock typically allows modification of the underlying data (exclusive access) and the read portion of this lock typically allows for read-only access (shared access).
In comparison, a Mutex
does not distinguish between readers or writers
that acquire the lock, therefore causing any tasks waiting for the lock to
become available to yield. An RwLock
will allow any number of readers to
acquire the lock as long as a writer is not holding the lock.
The priority policy of Tokio’s read-write lock is fair (or
write-preferring), in order to ensure that readers cannot starve
writers. Fairness is ensured using a first-in, first-out queue for the tasks
awaiting the lock; if a task that wishes to acquire the write lock is at the
head of the queue, read locks will not be given out until the write lock has
been released. This is in contrast to the Rust standard library’s
std::sync::RwLock
, where the priority policy is dependent on the
operating system’s implementation.
The type parameter T
represents the data