Struct qutex::QrwLock
[−]
[src]
pub struct QrwLock<T> { /* fields omitted */ }A lock-free queue-backed read/write data lock.
Methods
impl<T> QrwLock<T>[src]
fn new(val: T) -> QrwLock<T>
Creates and returns a new QrwLock.
fn request_read(self) -> FutureReadGuard<T>
Returns a new FutureReadGuard which can be used as a future and will
resolve into a ReadGuard.
fn request_write(self) -> FutureWriteGuard<T>
Returns a new FutureWriteGuard which can be used as a future and will
resolve into a WriteGuard.
unsafe fn push_request(&self, req: QrwRequest)
Pushes a lock request onto the queue.
fn get_mut(&mut self) -> Option<&mut T>
Returns a mutable reference to the inner Vec if there are currently
no other copies of this QrwLock.
Since this call borrows the inner lock mutably, no actual locking needs to take place---the mutable borrow statically guarantees no locks exist.
fn as_ptr(&self) -> *const T
Returns a reference to the inner value.
This is frought with potential peril.
fn as_mut_ptr(&self) -> *mut T
Returns a mutable reference to the inner value.
Drinking water from the tap in 1850's London would be safer.
unsafe fn process_queue(&self)
Pops the next lock request in the queue if possible.
If this lock is unlocked, read or write-locks this lock and unparks the next requester task in the queue.
If this lock is write-locked, this function does nothing.
If this lock is read-locked and the next request or consecutive requests in the queue are read requests, those requests will be fulfilled, unparking their respective tasks and incrementing the read-lock count appropriately.
unsafe fn release_reader(&self)
Decreases the reader count by one and unparks the next requester task in the queue if possible.
unsafe fn release_writer(&self)
Unlocks this lock and unparks the next requester task in the queue if possible.
Trait Implementations
impl<T> From<T> for QrwLock<T>[src]
impl<T> Clone for QrwLock<T>[src]
fn clone(&self) -> QrwLock<T>
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)1.0.0
Performs copy-assignment from source. Read more