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>
的冗余推导指南
|
已移除 |