c++ - dtor 中的 unique_lock 有什么用处吗?

标签 c++ multithreading unique-lock

在我正在调试的代码库中遇到了这个析构函数。

ManagerImpl::~ManagerImpl() {
    // don't go away if some thread is still hitting us
    boost::unique_lock<boost::mutex> l(m_mutex);
}

它在多线程程序中实际上有什么用处吗?看起来像拼凑。

我认为这个想法是在另一个线程调用锁定互斥体的函数时推迟销毁,但这样做是否有效? ElectricFence 段错误会让我不这么认为。

最佳答案

它可能试图推迟销毁,直到另一个线程解锁互斥体并留下另一个成员函数。

但是,这不会阻止另一个线程在释放析构函数中的锁后再次调用该函数。

线程之间必须有更多的交互(您没有显示)才能使此代码有意义。不过,我想,这似乎不是一个健壮的代码。

关于c++ - dtor 中的 unique_lock 有什么用处吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56635632/

相关文章:

python - 在多个线程中重用 Tensorflow session 导致崩溃

c++ - C++中的condition_variable wait_for

c++ - 等待 ShellExecuteEx(在 Windows 进程上设置访问权限)

c++ - 在 C++ 中获取位偏移量

c++ - 从 lib 文件回调方法的最简单/有效的方法

python - 在循环中运行两个相互依赖的线程

c++ - 如何将 blockng waitUntil() 方法写入使用 std::atomics 的池

c++ - 在同一个互斥量上使用两个 std::unique_lock 会导致死锁?

c++ - 调用 lambda 的结构/类成员时程序崩溃并显示 "bad_function_call"