A helper wrapper around Shared_rw_lock which simplifies:  
 More...
|  | 
| static constexpr size_t | NOT_IN_USE = std::numeric_limits<size_t>::max() | 
|  | The value used for m_shard_id to indicate that current thread did not s-latch any of the rw_lock's shards.  More... 
 | 
|  | 
| static thread_local size_t | m_shard_id {NOT_IN_USE} | 
|  | The id of the rw_lock's shard which this thread has s-latched, or NOT_IN_USE if it has not s-latched any.  More... 
 | 
|  | 
A helper wrapper around Shared_rw_lock which simplifies: 
- lifecycle by providing constructor and destructor, and
- s-latching and s-unlatching by keeping track of the shard id used for spreading the contention. There must be at most one instance of this class (the one in the lock_sys), as it uses thread_local-s to remember which shard of sharded rw lock was used by this thread to perform s-latching (so, hypothetical other instances would share this field, overwriting it and leading to errors). 
◆ Unique_sharded_rw_lock()
      
        
          | locksys::Latches::Unique_sharded_rw_lock::Unique_sharded_rw_lock | ( |  | ) |  | 
      
 
 
◆ ~Unique_sharded_rw_lock()
      
        
          | locksys::Latches::Unique_sharded_rw_lock::~Unique_sharded_rw_lock | ( |  | ) |  | 
      
 
 
◆ is_x_blocked_by_our_s()
  
  | 
        
          | bool locksys::Latches::Unique_sharded_rw_lock::is_x_blocked_by_our_s | ( |  | ) |  |  | inline | 
 
Checks if there is a thread requesting an x-latch waiting for our thread to release its s-latch. 
Must be called while holding an s-latch. 
- Returns
- true iff there is an x-latcher blocked by our s-latch. 
 
 
◆ s_lock()
  
  | 
        
          | void locksys::Latches::Unique_sharded_rw_lock::s_lock | ( | ut::Location | location | ) |  |  | inline | 
 
 
◆ s_own()
  
  | 
        
          | bool locksys::Latches::Unique_sharded_rw_lock::s_own | ( |  | ) | const |  | inline | 
 
 
◆ s_unlock()
  
  | 
        
          | void locksys::Latches::Unique_sharded_rw_lock::s_unlock | ( |  | ) |  |  | inline | 
 
 
◆ try_x_lock()
  
  | 
        
          | bool locksys::Latches::Unique_sharded_rw_lock::try_x_lock | ( | ut::Location | location | ) |  |  | inline | 
 
 
◆ x_lock()
  
  | 
        
          | void locksys::Latches::Unique_sharded_rw_lock::x_lock | ( | ut::Location | location | ) |  |  | inline | 
 
 
◆ x_own()
  
  | 
        
          | bool locksys::Latches::Unique_sharded_rw_lock::x_own | ( |  | ) | const |  | inline | 
 
 
◆ x_unlock()
  
  | 
        
          | void locksys::Latches::Unique_sharded_rw_lock::x_unlock | ( |  | ) |  |  | inline | 
 
 
◆ m_shard_id
  
  | 
        
          | thread_local size_t locksys::Latches::Unique_sharded_rw_lock::m_shard_id {NOT_IN_USE} |  | staticprivate | 
 
The id of the rw_lock's shard which this thread has s-latched, or NOT_IN_USE if it has not s-latched any. 
 
 
◆ NOT_IN_USE
  
  | 
        
          | constexpr size_t locksys::Latches::Unique_sharded_rw_lock::NOT_IN_USE = std::numeric_limits<size_t>::max() |  | staticconstexprprivate | 
 
The value used for m_shard_id to indicate that current thread did not s-latch any of the rw_lock's shards. 
 
 
◆ rw_lock
The actual rw_lock implementation doing the heavy lifting. 
 
 
The documentation for this class was generated from the following files: