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: