c++ - 我需要在Boost线程函数中调用unlock()吗?

标签 c++ multithreading boost

我有以下使用 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/

相关文章:

c++ - 如何调用类的默认构造函数,其构造函数由具有所有默认参数的 ctor 提供?

c++ - c++ chrono存储time_point表达式必须是可修改的左值

multithreading - 我如何将 worker 返回到 Go 中的 worker 池

c# - 在不阻塞的情况下防止一个线程上出现多个 MessageBox

c++ - boost::函数错误

c++ - 使用 boost::mpl::vector 创建可变参数模板?

c++ - 如何以编程方式在 Bada 中获取 MEID/ESN?

c++ - 无法将 boost 库与 CMake 链接

C++11 cmake O3选项< 'std::thread'初始化没有匹配的构造函数>

c++ - 如何在其他计算机上部署用visual studio编写的简单boost程序