shared_lock

专门用于管理 std::shared_timed_mutexstd::shared_mutex 的共享锁。它简化了获取和释放共享锁的操作,并提供了一些附加功能,比如延迟锁定、超时锁定等。

成员函数:

  • shared_lock(): 创建一个未锁定的shared_lock

  • shared_lock(mutex_type& m):

    创建一个shared_lock 并尝试锁定给定的mutex_typestd::shared_timed_mutexstd::shared_mutex)。如果锁定失败,则抛出异常。

  • shared_lock(mutex_type& m, std::defer_lock_t t):

    创建一个未锁定的 shared_lock,但关联到给定的mutex_type

  • shared_lock(mutex_type& m, std::try_to_lock_t t):

    尝试锁定给定的 mutex_type,如果成功则锁定,否则创建一个未锁定的shared_lock

  • shared_lock(mutex_type& m, const std::chrono::time_point<Clock, Duration>& abs_time):

    尝试在给定的绝对时间点之前锁定给定的mutex_type。如果成功则锁定,否则创建一个未锁定的shared_lock

  • shared_lock(mutex_type& m, const std::chrono::duration<Rep, Period>& rel_time):

    尝试在给定的相对时间段内锁定给定的 mutex_type。如果成功则锁定,否则创建一个未锁定的shared_lock

  • lock(): 锁定关联的互斥量(如果尚未锁定)。

  • try_lock(): 尝试锁定关联的互斥量,如果成功则返回true,否则返回false

  • try_lock_for(duration): 尝试在指定的时间段内锁定关联的互斥量,如果成功则返回true,否则返回false

  • try_lock_until(time_point): 尝试在给定的时间点之前锁定关联的互斥量,如果成功则返回true,否则返回false

  • unlock(): 释放锁(如果持有)。

  • owns_lock(): 检查 shared_lock 是否持有锁。

  • operator bool(): 检查 shared_lock 是否持有锁(返回 owns_lock() 的结果)。