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: