命名空间
变体
操作

C++ 命名要求: SharedTimedMutex (自 C++14 起)

来自 cppreference.cn
 
 
C++ 命名要求
 

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 要求

提供共享互斥机制并实现带超时的锁定
(class) [编辑]

[编辑] 参见