unique_lock是不是在函数调用的时候解锁了?
Is unique_lock unlocked when a function is called?
假设我遇到这样的情况:
void consumer(){
unique_lock<mutex> lock(mtx);
foo();
}
void foo(){
/* does the thread still own the mutex here? */
}
我预计会,但我不是 100% 确定。
unique_lock
的析构函数调用 mtx.unlock()
。析构函数在锁的生命周期结束时被调用。通常(见注释),锁生命周期的结束是:
void consumer(){
unique_lock<mutex> lock(mtx);
foo();
} // <- here.
所以是的,它仍然会被锁定。
假设我遇到这样的情况:
void consumer(){
unique_lock<mutex> lock(mtx);
foo();
}
void foo(){
/* does the thread still own the mutex here? */
}
我预计会,但我不是 100% 确定。
unique_lock
的析构函数调用 mtx.unlock()
。析构函数在锁的生命周期结束时被调用。通常(见注释),锁生命周期的结束是:
void consumer(){
unique_lock<mutex> lock(mtx);
foo();
} // <- here.
所以是的,它仍然会被锁定。