dtor 中的这个 unique_lock 有什么用吗?
Does this unique_lock in dtor serve any purpose?
运行 在我正在调试的代码库中跨越这个析构函数。
ManagerImpl::~ManagerImpl() {
// don't go away if some thread is still hitting us
boost::unique_lock<boost::mutex> l(m_mutex);
}
它在多线程程序中真的有用吗?看起来像个混蛋。
我假设这个想法是在另一个线程正在调用锁定互斥锁的函数时推迟销毁,但这样做是否有效? ElectricFence 段错误会让我相信否则。
它可能试图推迟销毁,直到另一个线程解锁互斥量并离开另一个成员函数。
但是,这不会阻止另一个线程在析构函数中的锁被释放后再次调用该函数。
线程之间必须有更多交互(您没有显示)才能使这段代码有意义。不过,我想,这似乎不是健壮的代码。
运行 在我正在调试的代码库中跨越这个析构函数。
ManagerImpl::~ManagerImpl() {
// don't go away if some thread is still hitting us
boost::unique_lock<boost::mutex> l(m_mutex);
}
它在多线程程序中真的有用吗?看起来像个混蛋。
我假设这个想法是在另一个线程正在调用锁定互斥锁的函数时推迟销毁,但这样做是否有效? ElectricFence 段错误会让我相信否则。
它可能试图推迟销毁,直到另一个线程解锁互斥量并离开另一个成员函数。
但是,这不会阻止另一个线程在析构函数中的锁被释放后再次调用该函数。
线程之间必须有更多交互(您没有显示)才能使这段代码有意义。不过,我想,这似乎不是健壮的代码。