Namespaces
Variants

std:: shared_lock

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
(C++11)
(C++11)
shared_lock
(C++14)
(C++11)
(C++11)
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
定义于头文件 <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 交换数据成员
(公开成员函数)
解除关联互斥量但不进行解锁
(公开成员函数)
观察器
返回指向关联互斥量的指针
(公开成员函数)
测试锁是否拥有其关联的互斥量
(公开成员函数)
测试锁是否拥有其关联的互斥量
(公开成员函数)

非成员函数

特化 std::swap 算法
(函数模板)

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

问题报告 适用标准 发布时的行为 修正后的行为
LWG 2981 C++17 提供了来自 shared_lock<Mutex> 的冗余推导指南 已移除