dtor中的unique_lock有什么用吗?

时间:2019-06-17 16:45:49

标签: 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分段故障会让我不相信。

1 个答案:

答案 0 :(得分:4)

它可能试图推迟销毁,直到另一个线程解锁互斥锁并离开另一个成员函数为止。

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

要使此代码有意义,线程之间必须有更多的交互(您未显示)。仍然认为,这似乎不是健壮的代码。