std::unique_lock
unique_lock 类是通用互斥锁所有权包装器,允许延迟锁定、时间受限的锁定尝试、递归锁定、锁所有权转移以及与条件变量一起使用。
类 unique_lock 是可移动的,但不可复制——它满足 MoveConstructible 和 MoveAssignable 的要求,但不满足 CopyConstructible 或 CopyAssignable 的要求。
unique_lock 类满足 BasicLockable 要求。 如果Mutex满足Lockable要求,unique_lock也满足Lockable要求(例如:可以在std::lock中使用); 如果 Mutex 满足 TimedLockable 要求,则 unique_lock 也满足 TimedLockable 要求。
BasicLockable 描述了为执行代理(即线程)提供独占阻塞语义的类型的最小特征。
std::defer_lock
std::defer_lock、std::try_to_lock 和 std::adopt_lock 分别是空结构标记类型 std::defer_lock_t、std::try_to_lock_t 和 std::adopt_lock_t 的实例。
它们用于指定 std::lock_guard、std::unique_lock 和 std::shared_lock 的锁定策略。
std::lock
使用死锁避免算法锁定给定的 Lockable 对象 lock1, lock2, …, lockn 以避免死锁。
这些对象通过一系列未指定的lock、try_lock 和unlock 调用来锁定。 如果对lock或unlock的调用导致异常,则在重新