PMDK C++ bindings
1.9
This is the C++ bindings documentation for PMDK's libpmemobj.
|
Persistent memory resident mutex implementation. More...
#include <libpmemobj++/mutex.hpp>
Public Types | |
typedef PMEMmutex * | native_handle_type |
Implementation defined handle to the native type. | |
Public Member Functions | |
mutex () | |
Default constructor. More... | |
~mutex ()=default | |
Defaulted destructor. | |
void | lock () |
Locks the mutex, blocks if already locked. More... | |
bool | try_lock () |
Tries to lock the mutex, returns regardless if the lock succeeds. More... | |
void | unlock () |
Unlocks a previously locked mutex. More... | |
native_handle_type | native_handle () noexcept |
Access a native handle to this condition variable. More... | |
enum pobj_tx_param | lock_type () const noexcept |
The type of lock needed for the transaction API. More... | |
mutex & | operator= (const mutex &)=delete |
Deleted assignment operator. | |
mutex (const mutex &)=delete | |
Deleted copy constructor. | |
Private Attributes | |
PMEMmutex | plock |
A POSIX style PMEM-resident mutex. | |
Persistent memory resident mutex implementation.
This class is an implementation of a PMEM-resident mutex which mimics in behavior the C++11 std::mutex. This class satisfies all requirements of the Mutex and StandardLayoutType concepts. The typical usage example would be:
|
inline |
Default constructor.
lock_error | when the mutex is not from persistent memory. |
|
inline |
Locks the mutex, blocks if already locked.
If a different thread already locked this mutex, the calling thread will block. If the same thread tries to lock a mutex it already owns, the behavior is undefined.
lock_error | when an error occurs, this includes all system related errors with the underlying implementation of the mutex. |
|
inlinenoexcept |
The type of lock needed for the transaction API.
|
inlinenoexcept |
Access a native handle to this condition variable.
|
inline |
Tries to lock the mutex, returns regardless if the lock succeeds.
If the same thread tries to lock a mutex it already owns, the behavior is undefined.
true
on successful lock acquisition, false
otherwise.lock_error | when an error occurs, this includes all system related errors with the underlying implementation of the mutex. |
|
inline |
Unlocks a previously locked mutex.
Unlocking a mutex that has not been locked by the current thread results in undefined behavior. Unlocking a mutex that has not been lock also results in undefined behavior.