shared_lock
专门用于管理 std::shared_timed_mutex 或 std::shared_mutex 的共享锁。它简化了获取和释放共享锁的操作,并提供了一些附加功能,比如延迟锁定、超时锁定等。
成员函数:
shared_lock(): 创建一个未锁定的shared_lock。shared_lock(mutex_type& m):创建一个
shared_lock并尝试锁定给定的mutex_type(std::shared_timed_mutex或std::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() 的结果)。