pub struct RwLock {
state: Atomic<u32>,
writer_notify: Atomic<u32>,
}
Fields§
§state: Atomic<u32>
§writer_notify: Atomic<u32>
Implementations§
Source§impl RwLock
impl RwLock
pub const fn new() -> Self
pub fn try_read(&self) -> bool
pub fn read(&self)
Sourcepub unsafe fn read_unlock(&self)
pub unsafe fn read_unlock(&self)
§Safety
The RwLock
must be read-locked (N readers) in order to call this.
fn read_contended(&self)
pub fn try_write(&self) -> bool
pub fn write(&self)
Sourcepub unsafe fn write_unlock(&self)
pub unsafe fn write_unlock(&self)
§Safety
The RwLock
must be write-locked (single writer) in order to call this.
Sourcepub unsafe fn downgrade(&self)
pub unsafe fn downgrade(&self)
§Safety
The RwLock
must be write-locked (single writer) in order to call this.
fn write_contended(&self)
Sourcefn wake_writer_or_readers(&self, state: u32)
fn wake_writer_or_readers(&self, state: u32)
Wakes up waiting threads after unlocking.
If both are waiting, this will wake up only one writer, but will fall back to waking up readers if there was no writer to wake up.
Sourcefn wake_writer(&self) -> bool
fn wake_writer(&self) -> bool
This wakes one writer and returns true if we woke up a writer that was blocked on futex_wait.
If this returns false, it might still be the case that we notified a writer that was about to go to sleep.
Sourcefn spin_until(&self, f: impl Fn(u32) -> bool) -> u32
fn spin_until(&self, f: impl Fn(u32) -> bool) -> u32
Spin for a while, but stop directly at the given condition.
fn spin_write(&self) -> u32
fn spin_read(&self) -> u32
Auto Trait Implementations§
impl !Freeze for RwLock
impl RefUnwindSafe for RwLock
impl Send for RwLock
impl Sync for RwLock
impl Unpin for RwLock
impl UnwindSafe for RwLock
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)] const IS_ZST: bool = _
#[doc(hidden)] const IS_ZST: bool = _
🔬This is a nightly-only experimental API. (
sized_type_properties
)Source§#[doc(hidden)] const LAYOUT: Layout = _
#[doc(hidden)] const LAYOUT: Layout = _
🔬This is a nightly-only experimental API. (
sized_type_properties
)Source§#[doc(hidden)] const MAX_SLICE_LEN: usize = _
#[doc(hidden)] const MAX_SLICE_LEN: usize = _
🔬This is a nightly-only experimental API. (
sized_type_properties
)The largest safe length for a
[Self]
. Read more