Struct RwLock

Source
pub struct RwLock {
    state: Atomic<u32>,
    writer_notify: Atomic<u32>,
}

Fields§

§state: Atomic<u32>§writer_notify: Atomic<u32>

Implementations§

Source§

impl RwLock

Source

pub const fn new() -> Self

Source

pub fn try_read(&self) -> bool

Source

pub fn read(&self)

Source

pub unsafe fn read_unlock(&self)

§Safety

The RwLock must be read-locked (N readers) in order to call this.

Source

fn read_contended(&self)

Source

pub fn try_write(&self) -> bool

Source

pub fn write(&self)

Source

pub unsafe fn write_unlock(&self)

§Safety

The RwLock must be write-locked (single writer) in order to call this.

Source

pub unsafe fn downgrade(&self)

§Safety

The RwLock must be write-locked (single writer) in order to call this.

Source

fn write_contended(&self)

Source

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.

Source

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.

Source

fn spin_until(&self, f: impl Fn(u32) -> bool) -> u32

Spin for a while, but stop directly at the given condition.

Source

fn spin_write(&self) -> u32

Source

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> SizedTypeProperties for T

Source§

#[doc(hidden)] const IS_ZST: bool = _

🔬This is a nightly-only experimental API. (sized_type_properties)
true if this type requires no storage. false if its size is greater than zero. Read more
Source§

#[doc(hidden)] const LAYOUT: Layout = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[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
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.