C++ 命名要求: BasicLockable (C++11 起)
来自 cppreference.cn
BasicLockable 要求描述了为执行代理(即线程)提供独占阻塞语义的类型的最小特性。
目录 |
[编辑] 要求
对于类型 L 要满足 BasicLockable,类型 L 的对象 m 必须满足以下条件:
| 表达式 | 前置条件 | 效果 |
|---|---|---|
| m.lock() | 阻塞直到当前执行代理(线程、进程、任务)可以获取锁。如果抛出异常,则不获取锁。 | |
| m.unlock() | 当前执行代理持有 m 上的非共享锁。 |
释放执行代理持有的非共享锁。 不抛出异常。 |
[编辑]
如果通过调用 lock、try_lock、try_lock_for 或 try_lock_until 成员函数获取了对象上的锁,则该锁被称为非共享锁。
[编辑] 标准库
以下标准库类型满足 BasicLockable 要求:
| (C++11) |
提供基本的互斥设施 (类) |
| (C++11) |
提供互斥设施,可以被同一线程递归锁定 (类) |
| (C++11) |
提供互斥设施,可以被递归锁定 被同一线程锁定并实现带超时的锁定 (类) |
| (C++17) |
提供共享互斥设施 (类) |
| (C++14) |
提供共享互斥设施,并实现带超时锁 (类) |
| (C++11) |
提供互斥设施,实现带超时的锁定 (类) |