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 ::鎖定它的功能。他們返回無效 –