C++ 命名要求: SharedTimedMutex (C++14 起)
来自 cppreference.cn
SharedTimedMutex 要求扩展了 TimedMutex 要求,以包含共享锁所有权模式。
[编辑] 要求
此外,类型为 SharedTimedMutex 的对象 m
支持定时共享操作
- 表达式 m.try_lock_shared_for(duration) 具有以下特性
- 行为类似于原子操作。
- 尝试在
duration
指定的持续时间内获取互斥体的共享所有权。如果duration
小于或等于duration.zero()
,则尝试在不等待的情况下获取所有权(如同通过try_lock()
)。否则,此函数会阻塞,直到获取互斥体或直到duration
指定的时间过去。它仅在成功时才在duration
内返回,但即使在duration
期间的某个时刻它没有被其他线程拥有,也可能无法获取互斥体。在任何情况下,如果获取了互斥体,它返回 true,否则返回 false。 - 如果
try_lock_shared_for(duration)
成功,则同一对象上先前的unlock()
操作会与此操作进行*同步*(等同于 release-acquire std::memory_order)。 - 如果调用线程已以任何模式拥有互斥体,则行为未定义。
- 在执行期间,时钟、时间点或持续时间可能会抛出异常(标准库提供的时钟、时间点和持续时间从不抛出)。
- 如果抛出异常,则不会获取共享锁。
- 表达式 m.try_lock_shared_until(time_point) 具有以下特性
- 行为类似于原子操作。
- 尝试在
time_point
之前剩余的时间内获取互斥体的共享所有权。如果time_point
已经过去,则尝试在不加锁的情况下获取所有权(如同通过try_lock()
)。否则,此函数会阻塞,直到获取互斥体或直到time_point
指定的时间过去。它仅在成功时才在time_point
之前返回,但即使在time_point
之前的某个时刻它没有被其他线程拥有,也可能无法获取互斥体。在任何情况下,如果获取了互斥体,它返回 true,否则返回 false。 - 如果
try_lock_shared_until(time_point)
成功,则同一对象上先前的unlock()
操作会与此操作进行*同步*(等同于 release-acquire std::memory_order)。 - 如果调用线程已以任何模式拥有互斥体,则行为未定义。
- 在执行期间,时钟、时间点或持续时间可能会抛出异常(标准库提供的时钟、时间点和持续时间从不抛出)。
- 如果抛出异常,则不会获取共享锁。
[编辑] 标准库
以下标准库类型满足 SharedTimedMutex 要求
(C++14) |
提供共享互斥设施,并实现带超时锁 (类) |