pub unsafe trait RawRwLock {
    type GuardMarker;

    const INIT: Self;

    // Required methods
    fn lock_shared(&self);
    fn try_lock_shared(&self) -> bool;
    unsafe fn unlock_shared(&self);
    fn lock_exclusive(&self);
    fn try_lock_exclusive(&self) -> bool;
    unsafe fn unlock_exclusive(&self);

    // Provided methods
    fn is_locked(&self) -> bool { ... }
    fn is_locked_exclusive(&self) -> bool { ... }
}
Expand description

Basic operations for a reader-writer lock.

Types implementing this trait can be used by RwLock to form a safe and fully-functioning RwLock type.

Safety

Implementations of this trait must ensure that the RwLock is actually exclusive: an exclusive lock can’t be acquired while an exclusive or shared lock exists, and a shared lock can’t be acquire while an exclusive lock exists.

Required Associated Types§

type GuardMarker

Marker type which determines whether a lock guard should be Send. Use one of the GuardSend or GuardNoSend helper types here.

Required Associated Constants§

const INIT: Self

Initial value for an unlocked RwLock.

Required Methods§

fn lock_shared(&self)

Acquires a shared lock, blocking the current thread until it is able to do so.

fn try_lock_shared(&self) -> bool

Attempts to acquire a shared lock without blocking.

unsafe fn unlock_shared(&self)

Releases a shared lock.

Safety

This method may only be called if a shared lock is held in the current context.

fn lock_exclusive(&self)

Acquires an exclusive lock, blocking the current thread until it is able to do so.

fn try_lock_exclusive(&self) -> bool

Attempts to acquire an exclusive lock without blocking.

unsafe fn unlock_exclusive(&self)

Releases an exclusive lock.

Safety

This method may only be called if an exclusive lock is held in the current context.

Provided Methods§

fn is_locked(&self) -> bool

Checks if this RwLock is currently locked in any way.

fn is_locked_exclusive(&self) -> bool

Check if this RwLock is currently exclusively locked.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl RawRwLock for RawRwLock

Implementors§

source§

impl RawRwLock for holochain::prelude::dependencies::kitsune_p2p_types::dependencies::lair_keystore_api::dependencies::parking_lot::RawRwLock