C++ 命名要求: SharedTimedMutex (自 C++14 起)
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() 操作与此操作同步(等同于释放-获取 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() 操作与此操作同步(等同于释放-获取 std::memory_order)。
- 如果调用线程已以任何模式拥有互斥量,则行为未定义。
- 在执行期间,时钟、时间点或持续时间可能抛出异常(标准库提供的时钟、时间点和持续时间从不抛出)。
- 如果抛出异常,则不会获取共享锁。
库类型
以下标准库类型满足 SharedTimedMutex: