Struct tikv::storage::Latches[][src]

pub struct Latches {
    slots: Vec<CachePadded<Mutex<Latch>>>,
    size: usize,
}

Latches which are used for concurrency control in the scheduler.

Each latch is indexed by a slot ID, hence the term latch and slot are used interchangeably, but conceptually a latch is a queue, and a slot is an index to the queue.

Fields

slots: Vec<CachePadded<Mutex<Latch>>>size: usize

Implementations

impl Latches[src]

pub fn new(size: usize) -> Latches[src]

Creates latches.

The size will be rounded up to the power of 2.

pub fn acquire(&self, lock: &mut Lock, who: u64) -> bool[src]

Tries to acquire the latches specified by the lock for command with ID who.

This method will enqueue the command ID into the waiting queues of the latches. A latch is considered acquired if the command ID is the first one of elements in the queue which have the same hash value. Returns true if all the Latches are acquired, false otherwise.

pub fn release(&self, lock: &Lock, who: u64) -> Vec<u64>[src]

Releases all latches owned by the lock of command with ID who, returns the wakeup list.

Preconditions: the caller must ensure the command is at the front of the latches.

fn lock_latch(&self, hash: u64) -> MutexGuard<'_, Latch>[src]

Auto Trait Implementations

impl !RefUnwindSafe for Latches

impl Send for Latches

impl Sync for Latches

impl Unpin for Latches

impl UnwindSafe for Latches

Blanket Implementations

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

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

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

impl<V, W> ConvertFrom<W> for V where
    W: ConvertTo<V>, 
[src]

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

impl<T> Instrument for T[src]

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

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

impl<T> Pointable for T[src]

type Init = T

The type for initializers.

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

type Output = T

Should always be Self

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

impl<T> SendSyncUnwindSafe for T where
    T: Send + Sync + UnwindSafe + ?Sized
[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<V, T> VZip<V> for T where
    V: MultiLane<T>, 
[src]