0
在这个例子中,std :: unique_lock调用标志std :: defer_lock。写在cppreference上:“defer_lock_t不获取互斥锁的所有权” 和:“(析构函数)解锁相关互斥锁,如果拥有”为什么unique_lock电话解锁,当他不拥有互斥?
现在,问题!
为什么在这个例子中,std :: unique_lock在析构函数中调用解锁?
void transfer(Box &from, Box &to, int num)
{
// don't actually take the locks yet
std::unique_lock<std::mutex> lock1(from.m, std::defer_lock);
std::unique_lock<std::mutex> lock2(to.m, std::defer_lock);
// lock both unique_locks without deadlock
std::lock(lock1, lock2);
from.num_things -= num;
to.num_things += num;
// 'from.m' and 'to.m' mutexes unlocked in 'unique_lock' dtors
}
?????
std ::锁定它的功能。他们返回无效 –