std::lock()函数模板
一次锁住两个或者带个一样的互斥量(至少两个)
std::lock(my_mutex1, my_mutex2);
my_mutex1.unlock(); my_mutex2.unlock();
std::lock_guard()和std::adopt_lock
std::lock(my_mutex1, my_mutex2);
std::lock_guard<std::mutex> subguard1(my_mutex1, std::adopt_lock());
std::lock_guard<std::mutex> subguard2(my_mutex2, std::adopt_lock());
adopt_lock是一个标记,表示这个互斥量已近lock(),不需要再lock_guard的构造函数中再对mutex对象进行lock()
std::unique_lock
unique_lock是一个类模板,可以取代lock_guard,推荐使用lock_guard
unique_lock也是对mutex对象进行加锁和解锁,但是比lock_guard灵活,但是效率低
只有互斥量作为参数时
std::unique_lock<std::mutex> subguard(my_mutex);
第二个参数
std::adopt_lock
std::try_to_lock
成员函数
lock()
unlock()
try_lock()