调用函数时,unique_lock是否已解锁?

时间:2019-03-28 19:14:06

标签: c++ multithreading mutex

假设我遇到这样的情况:

void consumer(){
   unique_lock<mutex> lock(mtx);
   foo();  
}

void foo(){
    /* does the thread still own the mutex here? */
}

我希望可以,但是我不确定100%。

1 个答案:

答案 0 :(得分:6)

unique_lock的析构函数调用mtx.unlock()。析构函数在锁的生存期结束时被调用。通常(请参阅注释),锁的生存期结束是:

void consumer(){
   unique_lock<mutex> lock(mtx);
   foo();  
} // <- here.

是的,它仍然会被锁定。