C++ named requirements: SharedLockable (since C++14)
From cppreference.net
C++
C++ named requirements
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SharedLockable 要求描述了为执行代理(即线程)提供共享阻塞语义的类型应具备的最小特性。
目录 |
要求
对于类型
L
要成为
SharedLockable
,类型
L
的对象
m
需满足以下条件:
| 表达式 | 前置条件 | 效果 | 返回值 |
|---|---|---|---|
| m. lock_shared ( ) | 阻塞直至当前执行代理(线程、进程、任务)能获得锁。若抛出异常,则不会获得锁。 | ||
| m. try_lock_shared ( ) | 尝试在不阻塞的情况下为当前执行代理(线程、进程、任务)获取锁。若抛出异常,则不会获得锁。 | true 表示成功获得锁, false 表示未获得 | |
| m. unlock_shared ( ) |
当前执行代理持有
m
的共享锁。
|
释放执行代理持有的共享锁。
不抛出异常。 |
共享锁
对象上的锁若通过调用
lock_shared
、
try_lock_shared
、
try_lock_shared_for
或
try_lock_shared_until
成员函数获得,则称为
共享锁
。
标准库
以下标准库类型满足 SharedLockable 要求:
|
(C++17)
|
提供共享互斥机制
(类) |
|
(C++14)
|
提供共享互斥机制并实现带超时的锁定功能
(类) |