在我正在调试的代码库中遇到了这个析构函数。
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/