pub struct RwLock {
state: AtomicU32,
writer_notify: AtomicU32,
}
Fields§
§state: AtomicU32
§writer_notify: AtomicU32
Implementations§
source§impl RwLock
impl RwLock
pub const fn new() -> Self
pub fn try_read(&self) -> bool
pub fn read(&self)
pub unsafe fn read_unlock(&self)
fn read_contended(&self)
pub fn try_write(&self) -> bool
pub fn write(&self)
pub unsafe fn write_unlock(&self)
fn write_contended(&self)
sourcefn wake_writer_or_readers(&self, state: u32)
fn wake_writer_or_readers(&self, state: u32)
Wake 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 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