我有以下使用 C++ Boost 线程的代码行:
void threadFunc()
{
boost::mutex::scoped_lock lock(m_Mutex);
//some code here...
condition.notify_one();
}
那么我应该在最后一行之前调用unlock()函数,如下所示?如果我不调用unlock()有什么区别?
void threadFunc()
{
boost::mutex::scoped_lock lock(m_Mutex);
//some code here...
lock.unlock();
condition.notify_one();
}
最佳答案
否 - scoped_lock
类的要点是锁与范围相关 - 即,当 scoped_lock
对象超出范围时,锁会自动释放。这可以确保(例如)如果任何干预代码抛出异常,锁仍然会被释放。
关于c++ - 我需要在Boost线程函数中调用unlock()吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272595/