定义于头文件
<shared_mutex>
|
||
template< class Mutex >
class shared_lock; |
(C++14 起) | |
类 shared_lock
是通用共享互斥所有权包装器,允许延迟锁定、定时锁定和锁所有权的转移。锁定 shared_lock
,会以共享模式锁定关联的共享互斥( std::unique_lock 可用于以排他性模式锁定)。
shared_lock
类可移动,但不可复制——它满足可复制构造 (MoveConstructible
) 与可复制赋值 (MoveAssignable
) 的要求,但不满足可复制构造 (CopyConstructible
) 或可复制赋值 (CopyAssignable
) 。
为以共享所有权模式等待于共享互斥,可使用 std::condition_variable_any ( std::condition_variable 要求 std::unique_lock 故而只能以唯一所有权模式等待)。
目录 |
Mutex | - | 要锁定的共享互斥类型。类型必须满足共享互斥 (SharedMutex ) 要求。
|
类型 | 定义 |
mutex_type
|
Mutex |
构造 shared_lock ,可选地锁定提供的互斥 (公开成员函数) |
|
解锁关联的互斥 (公开成员函数) |
|
若占有则解锁互斥,然后获得对方的所有权 (公开成员函数) |
|
共享锁定 |
|
锁定关联的互斥 (公开成员函数) |
|
尝试锁定关联的互斥 (公开成员函数) |
|
尝试锁定关联的互斥,以指定时长 (公开成员函数) |
|
尝试锁定关联的互斥,直至指定的时间点 (公开成员函数) |
|
解锁关联的互斥 (公开成员函数) |
|
修改器 |
|
与另一 shared_lock 交换数据成员 (公开成员函数) |
|
解除关联 mutex 而不解锁 (公开成员函数) |
|
观察器 |
|
返回指向关联的互斥的指针 (公开成员函数) |
|
测试锁是否占有其关联的互斥 (公开成员函数) |
|
测试锁是否占有其关联的互斥 (公开成员函数) |
std::swap 对 shared_lock 的特化 (函数模板) |
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
DR | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 2981 | C++17 | 曾提供来自 shared_lock<Mutex> 的冗余推导指引
|
已移除 |