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 ,可选地锁定提供的互斥体(public member function) | |
解锁关联的互斥体 (public member function) | |
解锁互斥体(如果拥有),并获取另一个互斥体的所有权 (public member function) | |
| |
锁定关联的互斥体 (public member function) | |
尝试锁定关联的互斥体 (public member function) | |
在指定持续时间内尝试锁定关联的互斥体 (public member function) | |
在指定时间点之前尝试锁定关联的互斥体 (public member function) | |
解锁关联的互斥体 (public member function) | |
修改器 | |
与另一个 shared_lock 交换数据成员(public member function) | |
在不解锁的情况下解除互斥体的关联 (public member function) | |
观察器 | |
返回指向关联互斥体的指针 (public member function) | |
测试锁是否拥有其关联的互斥体 (public member function) | |
测试锁是否拥有其关联的互斥体 (public member function) |
[编辑] 非成员函数
(C++14) |
特化 std::swap 算法 (function template) |
[编辑] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 发布时的行为 | 正确的行为 |
---|---|---|---|
LWG 2981 | C++17 | 提供了冗余的 shared_lock<Mutex> 推导指南 |
已移除 |