std:: shared_lock
| 
 | 
 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Shared locking | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
| 
           定义于头文件
            
            
             <shared_mutex>
            
            | ||
| 
           
            
             template
            
            
             <
            
            
             class
            
            Mutex
            
             >
            
             class shared_lock ; | (C++14 起) | |
       
        shared_lock
       
       类是一种通用共享互斥量所有权包装器,支持延迟锁定、定时锁定及锁所有权转移。锁定
       
        shared_lock
       
       将以共享模式锁定关联的共享互斥量(若需以独占模式锁定,可使用
       
        
         std::unique_lock
        
       
       )。
      
       
        shared_lock
       
       类是可移动的,但不可复制——它满足
       
        
         MoveConstructible
        
       
       与
       
        
         MoveAssignable
        
       
       的要求,但不满足
       
        
         CopyConstructible
        
       
       或
       
        
         CopyAssignable
        
       
       的要求。
      
       
        shared_lock
       
       满足
       
        
         Lockable
        
       
       要求。若
       
        Mutex
       
       满足
       
        
         SharedTimedLockable
        
       
       要求,则
       
        shared_lock
       
       亦满足
       
        
         TimedLockable
        
       
       要求。
      
若要在共享所有权模式下等待共享互斥锁,可使用 std::condition_variable_any ( std::condition_variable 需要 std::unique_lock ,因此只能在独占所有权模式下等待)。
| 目录 | 
模板参数
| Mutex | - | 要锁定的共享互斥锁类型。该类型必须满足 SharedLockable 要求 | 
成员类型
| 类型 | 定义 | 
| 
          mutex_type
          | 
          Mutex
          | 
成员函数
| 构造一个 
          shared_lock
         ,可选择性地锁定提供的互斥量(公开成员函数) | |
| 解锁关联的互斥量 (公开成员函数) | |
| 解锁当前互斥量(如果拥有),并获取另一个互斥量的所有权 (公开成员函数) | |
| 共享锁定 | |
| 锁定关联的互斥量 (公开成员函数) | |
| 尝试锁定关联的互斥量 (公开成员函数) | |
| 尝试在指定时长内锁定关联的互斥量 (公开成员函数) | |
| 尝试在指定时间点前锁定关联的互斥量 (公开成员函数) | |
| 解锁关联的互斥量 (公开成员函数) | |
| 修改器 | |
| 与另一个 
          shared_lock
         交换数据成员(公开成员函数) | |
| 解除关联互斥量但不进行解锁 (公开成员函数) | |
| 观察器 | |
| 返回指向关联互斥量的指针 (公开成员函数) | |
| 测试锁是否拥有其关联的互斥量 (公开成员函数) | |
| 测试锁是否拥有其关联的互斥量 (公开成员函数) | |
非成员函数
| 
           
            
             
              (C++14)
             
            
           
           | 特化
         
          
           std::swap
          
         
         算法 (函数模板) | 
缺陷报告
以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
| 问题报告 | 适用标准 | 发布时的行为 | 修正后的行为 | 
|---|---|---|---|
| LWG 2981 | C++17 | 提供了来自 
          shared_lock<Mutex>
         的冗余推导指南 | 已移除 |