[][src]Struct synchronoise::phaser::PhaserReadLock

pub struct PhaserReadLock { /* fields omitted */ }

Guard struct for a WriterReaderPhaser that allows a reader to perform a "phase flip".

The PhaserReadLock struct allows one to perform a "phase flip" on its parent WriterReaderPhaser. It is held in a std::sync::Mutex in its parent phaser, enforcing that only one reader may be active at once.

The flip_phase call performs a spin-wait while waiting the the currently-active writers to finish. A sleep time may be added between checks by calling flip_with_sleep instead.

Example

{
    let lock = phaser.read_lock().unwrap();
    // swap buffers
    lock.flip_phase();
    // reader now has access to a stable snapshot
} // lock drops, relinquishing the read lock and allowing another reader to lock

Methods

impl PhaserReadLock[src]

pub fn flip_phase(&self)[src]

Wait until all currently-active writer critical sections have completed.

pub fn flip_with_sleep(&self, sleep_time: Duration)[src]

Wait until all currently-active writer critical sections have completed. While waiting, sleep with the given duration.

Auto Trait Implementations

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]