Struct parking_lot::raw_rwlock::RawRwLock
source · pub struct RawRwLock {
state: AtomicUsize,
}
Expand description
Raw reader-writer lock type backed by the parking lot.
Fields§
§state: AtomicUsize
Implementations§
source§impl RawRwLock
impl RawRwLock
fn try_lock_upgradable_fast(&self) -> bool
fn try_lock_upgradable_slow(&self) -> bool
fn lock_exclusive_slow(&self, timeout: Option<Instant>) -> bool
fn unlock_exclusive_slow(&self, force_fair: bool)
fn lock_upgradable_slow(&self, timeout: Option<Instant>) -> bool
fn unlock_upgradable_slow(&self, force_fair: bool)
fn try_upgrade_slow(&self) -> bool
fn upgrade_slow(&self, timeout: Option<Instant>) -> bool
fn downgrade_slow(&self)
fn downgrade_to_upgradable_slow(&self)
fn bump_exclusive_slow(&self)
fn bump_upgradable_slow(&self)
sourceunsafe fn wake_parked_threads(
&self,
new_state: usize,
callback: impl FnOnce(usize, UnparkResult) -> UnparkToken
)
unsafe fn wake_parked_threads( &self, new_state: usize, callback: impl FnOnce(usize, UnparkResult) -> UnparkToken )
Common code for waking up parked threads after releasing WRITER_BIT or UPGRADABLE_BIT.
Safety
callback
must uphold the requirements of the callback
parameter to
parking_lot_core::unpark_filter
. Meaning no panics or calls into any function in
parking_lot
.
fn wait_for_readers(&self, timeout: Option<Instant>, prev_value: usize) -> bool
sourcefn lock_common(
&self,
timeout: Option<Instant>,
token: ParkToken,
try_lock: impl FnMut(&mut usize) -> bool,
validate_flags: usize
) -> bool
fn lock_common( &self, timeout: Option<Instant>, token: ParkToken, try_lock: impl FnMut(&mut usize) -> bool, validate_flags: usize ) -> bool
Common code for acquiring a lock
fn deadlock_acquire(&self)
fn deadlock_release(&self)
Trait Implementations§
source§impl RawRwLock for RawRwLock
impl RawRwLock for RawRwLock
§type GuardMarker = GuardNoSend
type GuardMarker = GuardNoSend
Marker type which determines whether a lock guard should be
Send
. Use
one of the GuardSend
or GuardNoSend
helper types here.source§fn lock_exclusive(&self)
fn lock_exclusive(&self)
Acquires an exclusive lock, blocking the current thread until it is able to do so.
source§fn try_lock_exclusive(&self) -> bool
fn try_lock_exclusive(&self) -> bool
Attempts to acquire an exclusive lock without blocking.
source§unsafe fn unlock_exclusive(&self)
unsafe fn unlock_exclusive(&self)
Releases an exclusive lock. Read more
Acquires a shared lock, blocking the current thread until it is able to do so.
Attempts to acquire a shared lock without blocking.
Releases a shared lock. Read more
source§fn is_locked_exclusive(&self) -> bool
fn is_locked_exclusive(&self) -> bool
Check if this
RwLock
is currently exclusively locked.source§impl RawRwLockDowngrade for RawRwLock
impl RawRwLockDowngrade for RawRwLock
source§impl RawRwLockFair for RawRwLock
impl RawRwLockFair for RawRwLock
Releases a shared lock using a fair unlock protocol. Read more
source§unsafe fn unlock_exclusive_fair(&self)
unsafe fn unlock_exclusive_fair(&self)
Releases an exclusive lock using a fair unlock protocol. Read more
Temporarily yields a shared lock to a waiting thread if there is one. Read more
source§unsafe fn bump_exclusive(&self)
unsafe fn bump_exclusive(&self)
Temporarily yields an exclusive lock to a waiting thread if there is one. Read more
source§impl RawRwLockRecursive for RawRwLock
impl RawRwLockRecursive for RawRwLock
Acquires a shared lock without deadlocking in case of a recursive lock.
Attempts to acquire a shared lock without deadlocking in case of a recursive lock.
source§impl RawRwLockRecursiveTimed for RawRwLock
impl RawRwLockRecursiveTimed for RawRwLock
Attempts to acquire a shared lock until a timeout is reached, without
deadlocking in case of a recursive lock.
Attempts to acquire a shared lock until a timeout is reached, without
deadlocking in case of a recursive lock.
source§impl RawRwLockTimed for RawRwLock
impl RawRwLockTimed for RawRwLock
Attempts to acquire a shared lock until a timeout is reached.
Attempts to acquire a shared lock until a timeout is reached.
source§fn try_lock_exclusive_for(&self, timeout: Duration) -> bool
fn try_lock_exclusive_for(&self, timeout: Duration) -> bool
Attempts to acquire an exclusive lock until a timeout is reached.
source§fn try_lock_exclusive_until(&self, timeout: Instant) -> bool
fn try_lock_exclusive_until(&self, timeout: Instant) -> bool
Attempts to acquire an exclusive lock until a timeout is reached.
source§impl RawRwLockUpgrade for RawRwLock
impl RawRwLockUpgrade for RawRwLock
source§fn lock_upgradable(&self)
fn lock_upgradable(&self)
Acquires an upgradable lock, blocking the current thread until it is able to do so.
source§fn try_lock_upgradable(&self) -> bool
fn try_lock_upgradable(&self) -> bool
Attempts to acquire an upgradable lock without blocking.
source§unsafe fn unlock_upgradable(&self)
unsafe fn unlock_upgradable(&self)
Releases an upgradable lock. Read more
source§unsafe fn try_upgrade(&self) -> bool
unsafe fn try_upgrade(&self) -> bool
Attempts to upgrade an upgradable lock to an exclusive lock without
blocking. Read more
source§impl RawRwLockUpgradeDowngrade for RawRwLock
impl RawRwLockUpgradeDowngrade for RawRwLock
source§unsafe fn downgrade_upgradable(&self)
unsafe fn downgrade_upgradable(&self)
Downgrades an upgradable lock to a shared lock. Read more
source§unsafe fn downgrade_to_upgradable(&self)
unsafe fn downgrade_to_upgradable(&self)
Downgrades an exclusive lock to an upgradable lock. Read more
source§impl RawRwLockUpgradeFair for RawRwLock
impl RawRwLockUpgradeFair for RawRwLock
source§unsafe fn unlock_upgradable_fair(&self)
unsafe fn unlock_upgradable_fair(&self)
Releases an upgradable lock using a fair unlock protocol. Read more
source§unsafe fn bump_upgradable(&self)
unsafe fn bump_upgradable(&self)
Temporarily yields an upgradable lock to a waiting thread if there is one. Read more
source§impl RawRwLockUpgradeTimed for RawRwLock
impl RawRwLockUpgradeTimed for RawRwLock
source§fn try_lock_upgradable_until(&self, timeout: Instant) -> bool
fn try_lock_upgradable_until(&self, timeout: Instant) -> bool
Attempts to acquire an upgradable lock until a timeout is reached.
source§fn try_lock_upgradable_for(&self, timeout: Duration) -> bool
fn try_lock_upgradable_for(&self, timeout: Duration) -> bool
Attempts to acquire an upgradable lock until a timeout is reached.
Auto Trait Implementations§
impl RefUnwindSafe for RawRwLock
impl Send for RawRwLock
impl Sync for RawRwLock
impl Unpin for RawRwLock
impl UnwindSafe for RawRwLock
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