dtor中的这个unique_lock是否有任何目的

Does this unique_lock in dtor serve any purpose?

本文关键字:lock 是否 任何目 unique dtor      更新时间:2023-10-16

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

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

它实际上在多线程程序中有任何有用的目的吗? 它看起来像笨拙。

我假设这个想法是在另一个线程调用锁定互斥锁的函数时推迟销毁,但它甚至有效地这样做了吗?电栅栏段错误会让我相信不然。

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

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

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