std::shared_lock
|
|
成员函数 | ||||
共享锁定 | ||||
修改器 | ||||
观察器 | ||||
非成员函数 | ||||
在标头
<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 交换数据成员 (公开成员函数) |
|
解除关联 mutex 而不解锁 (公开成员函数) |
|
观察器 |
|
返回指向关联的互斥的指针 (公开成员函数) |
|
测试锁是否占有其关联的互斥 (公开成员函数) |
|
测试锁是否占有其关联的互斥 (公开成员函数) |
非成员函数
(C++14)
|
std::swap
对 shared_lock 的特化 (函数模板) |
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 2981 | C++17 | 曾提供来自 shared_lock<Mutex> 的冗余推导指引
|
已移除 |