std::shared_lock
来自 cppreference.cn
定义于头文件 <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++ 标准。
DR | 应用于 | 已发布行为 | 正确行为 |
---|---|---|---|
LWG 2981 | C++17 | 提供了来自 shared_lock<Mutex> 的冗余推导指南 |
已移除 |