libfoedus-core
FOEDUS Core Library
|
Implements an MCS-locking Algorithm. More...
Implements an MCS-locking Algorithm.
ADAPTOR | A template that implements the McsAdaptorConcept template concept. We explicitly instantiate for all possible ADAPTOR types in cpp. |
RW_BLOCK | Queue node object for RW-lock. Either McsRwSimpleBlock or McsRwExtendedBlock. This also defines the implementation. |
Definition at line 87 of file xct_mcs_impl.hpp.
#include <xct_mcs_impl.hpp>
Public Member Functions | |
McsImpl (ADAPTOR adaptor) | |
McsBlockIndex | acquire_unconditional_rw_reader (McsRwLock *lock) |
RW-lock methods: BEGIN. More... | |
McsBlockIndex | acquire_unconditional_rw_writer (McsRwLock *lock) |
[RW] Unconditionally takes a writer lock. More... | |
McsBlockIndex | acquire_try_rw_reader (McsRwLock *lock) |
Try-acquire. More... | |
McsBlockIndex | acquire_try_rw_writer (McsRwLock *lock) |
[RW] Try to take a writer lock. More... | |
AcquireAsyncRet | acquire_async_rw_reader (McsRwLock *lock) |
Async-acquire trios (acquire, cancel, retry) More... | |
AcquireAsyncRet | acquire_async_rw_writer (McsRwLock *lock) |
[RW] Asynchronously try to take a writer lock. More... | |
bool | retry_async_rw_reader (McsRwLock *lock, McsBlockIndex block_index) |
[RW] Returns whether the lock requeust is now granted. More... | |
bool | retry_async_rw_writer (McsRwLock *lock, McsBlockIndex block_index) |
void | cancel_async_rw_reader (McsRwLock *lock, McsBlockIndex block_index) |
[RW] Cancels the lock request. More... | |
void | cancel_async_rw_writer (McsRwLock *lock, McsBlockIndex block_index) |
void | release_rw_reader (McsRwLock *lock, McsBlockIndex block_index) |
Release and other stuffs. More... | |
void | release_rw_writer (McsRwLock *lock, McsBlockIndex block_index) |
[RW] Releases a writer lock. More... | |
Static Public Member Functions | |
static bool | does_support_try_rw_reader () |
|
inlineexplicit |
Definition at line 89 of file xct_mcs_impl.hpp.
AcquireAsyncRet foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::acquire_async_rw_reader | ( | McsRwLock * | lock | ) |
Async-acquire trios (acquire, cancel, retry)
[RW] Asynchronously try to take a reader lock.
AcquireAsyncRet foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::acquire_async_rw_writer | ( | McsRwLock * | lock | ) |
[RW] Asynchronously try to take a writer lock.
McsBlockIndex foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::acquire_try_rw_reader | ( | McsRwLock * | lock | ) |
Try-acquire.
[RW] Try to take a reader lock.
McsBlockIndex foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::acquire_try_rw_writer | ( | McsRwLock * | lock | ) |
[RW] Try to take a writer lock.
McsBlockIndex foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::acquire_unconditional_rw_reader | ( | McsRwLock * | lock | ) |
RW-lock methods: BEGIN.
Unconditional-acquire [RW] Unconditionally takes a reader lock.
McsBlockIndex foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::acquire_unconditional_rw_writer | ( | McsRwLock * | lock | ) |
[RW] Unconditionally takes a writer lock.
void foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::cancel_async_rw_reader | ( | McsRwLock * | lock, |
McsBlockIndex | block_index | ||
) |
[RW] Cancels the lock request.
void foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::cancel_async_rw_writer | ( | McsRwLock * | lock, |
McsBlockIndex | block_index | ||
) |
|
static |
void foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::release_rw_reader | ( | McsRwLock * | lock, |
McsBlockIndex | block_index | ||
) |
Release and other stuffs.
[RW] Releases a reader lock.
void foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::release_rw_writer | ( | McsRwLock * | lock, |
McsBlockIndex | block_index | ||
) |
[RW] Releases a writer lock.
Referenced by foedus::xct::SysxctLockList::release_all_locks().
bool foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::retry_async_rw_reader | ( | McsRwLock * | lock, |
McsBlockIndex | block_index | ||
) |
[RW] Returns whether the lock requeust is now granted.
Referenced by foedus::xct::McsImpl< ADAPTOR, McsRwSimpleBlock >::acquire_async_rw_reader(), foedus::xct::McsImpl< ADAPTOR, McsRwSimpleBlock >::acquire_try_rw_reader(), and foedus::xct::McsImpl< ADAPTOR, McsRwExtendedBlock >::cancel_async_rw_reader().
bool foedus::xct::McsImpl< ADAPTOR, RW_BLOCK >::retry_async_rw_writer | ( | McsRwLock * | lock, |
McsBlockIndex | block_index | ||
) |
Referenced by foedus::xct::McsImpl< ADAPTOR, McsRwSimpleBlock >::acquire_async_rw_writer(), and foedus::xct::McsImpl< ADAPTOR, McsRwSimpleBlock >::acquire_try_rw_writer().