Persistent memory resident mutex implementation.
More...
#include <libpmemobj++/mutex.hpp>
|
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:
#include <mutex>
void
unique_guard_example()
{
struct root {
nvobj::mutex pmutex;
};
auto pop = nvobj::pool<root>::create("poolfile", "layout",
PMEMOBJ_MIN_POOL);
std::lock_guard<nvobj::mutex> guard(proot->pmutex);
std::unique_lock<nvobj::mutex> other_guard(proot->pmutex);
}
◆ mutex()
pmem::obj::mutex::mutex |
( |
| ) |
|
|
inline |
Default constructor.
- Exceptions
-
lock_error | when the mutex is not from persistent memory. |
◆ lock()
void pmem::obj::mutex::lock |
( |
| ) |
|
|
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.
- Exceptions
-
lock_error | when an error occurs, this includes all system related errors with the underlying implementation of the mutex. |
◆ lock_type()
enum pobj_tx_param pmem::obj::mutex::lock_type |
( |
| ) |
const |
|
inlinenoexcept |
The type of lock needed for the transaction API.
- Returns
- TX_PARAM_MUTEX
◆ native_handle()
Access a native handle to this condition variable.
- Returns
- a pointer to PMEMmutex.
◆ try_lock()
bool pmem::obj::mutex::try_lock |
( |
| ) |
|
|
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.
- Returns
true
on successful lock acquisition, false
otherwise.
- Exceptions
-
lock_error | when an error occurs, this includes all system related errors with the underlying implementation of the mutex. |
◆ unlock()
void pmem::obj::mutex::unlock |
( |
| ) |
|
|
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.
The documentation for this class was generated from the following file: