假设我遇到这样的情况:
void consumer(){
unique_lock<mutex> lock(mtx);
foo();
}
void foo(){
/* does the thread still own the mutex here? */
}
我希望可以,但是我不确定100%。
答案 0 :(得分:6)
unique_lock
的析构函数调用mtx.unlock()
。析构函数在锁的生存期结束时被调用。通常(请参阅注释),锁的生存期结束是:
void consumer(){
unique_lock<mutex> lock(mtx);
foo();
} // <- here.
是的,它仍然会被锁定。