std::lock_guard
std::lock_guard 在构造函数中进行加锁,析构函数中进行解锁。
std::unique_lock
类 unique_lock 是通用互斥包装器,允许延迟锁定、锁定的有时限尝试、递归锁定、所有权转移和与条件变量一同使用。
unique_lock比lock_guard使用更加灵活,功能更加强大。
使用unique_lock需要付出更多的时间、性能成本。
std::defer_lock_t, std::try_to_lock_t, std::adopt_lock_t
Type Effect(s)
defer_lock_t do not acquire ownership of the mutex
try_to_lock_t try to acquire ownership of the mutex without blocking
adopt_lock_t assume the calling thread already has ownership of the mutex
std::lock
std::condition_variable
void wait( std::unique_lock<std::mutex>& lock, Predicate pred );
等价于
while (!pred()) {
wait(lock);
}