Trait lock_api::RawRwLock[][src]

pub unsafe trait RawRwLock {
    type GuardMarker;

    const INIT: Self;

    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); fn is_locked(&self) -> bool { ... } }

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.

Associated Types

type GuardMarker[src]

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

Loading content...

Associated Constants

const INIT: Self[src]

Initial value for an unlocked RwLock.

Loading content...

Required methods

fn lock_shared(&self)[src]

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

fn try_lock_shared(&self) -> bool[src]

Attempts to acquire a shared lock without blocking.

unsafe fn unlock_shared(&self)[src]

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)[src]

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

fn try_lock_exclusive(&self) -> bool[src]

Attempts to acquire an exclusive lock without blocking.

unsafe fn unlock_exclusive(&self)[src]

Releases an exclusive lock.

Safety

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

Loading content...

Provided methods

fn is_locked(&self) -> bool[src]

Checks if this RwLock is currently locked in any way.

Loading content...

Implementors

Loading content...