C++ named requirements: BasicLockable (since C++11)
From cppreference.net
C++
C++ named requirements
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BasicLockable 需求描述了为执行代理(即线程)提供独占阻塞语义的类型应具备的最小特性。
目录 |
要求
对于类型
L
成为
可基本锁定
类型,类型
L
的对象
m
需满足以下条件:
| 表达式 | 前置条件 | 效果 |
|---|---|---|
| m. lock ( ) | 阻塞直至当前执行代理(线程、进程、任务)能获得锁。若抛出异常,则不会获得锁。 | |
| m. unlock ( ) |
当前执行代理持有
m
上的非共享锁。
|
释放执行代理持有的非共享锁。
不抛出异常。 |
非共享锁
当一个对象上的锁是通过调用
lock
、
try_lock
、
try_lock_for
或
try_lock_until
成员函数获取时,该锁被称为
非共享锁
。
标准库
以下标准库类型满足 BasicLockable 要求:
|
(C++11)
|
提供基础互斥设施
(class) |
|
(C++11)
|
提供可被同一线程递归锁定的互斥设施
(class) |
|
(C++11)
|
提供可被同一线程递归锁定
并实现超时锁定机制的互斥设施 (class) |
|
(C++17)
|
提供共享互斥设施
(class) |
|
(C++14)
|
提供共享互斥设施并实现超时锁定机制
(class) |
|
(C++11)
|
提供实现超时锁定机制的互斥设施
(class) |