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);
}
它实际上在多线程程序中有任何有用的目的吗? 它看起来像笨拙。
我假设这个想法是在另一个线程调用锁定互斥锁的函数时推迟销毁,但它甚至有效地这样做了吗?电栅栏段错误会让我相信不然。
它可能试图推迟销毁,直到另一个线程解锁互斥锁并留下另一个成员函数。
但是,这不会阻止另一个线程在释放析构函数中的锁后再次调用该函数。
线程之间必须有更多的交互(您不显示(才能使此代码有意义。不过,认为这似乎不是健壮的代码。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- 是否可以从int转换为enum类类型
- 无论条件是否为true,if总是在c++中执行
- 如何找到大小'x'数组是否完全填充,在C++?
- 检查值是否在集合p1和p2中,但不在p3中
- 我们是否需要对多线程 x32 系统使用 lock 来读取或写入 uint32_t 变量
- 我是否必须使用neak_ptr.lock()只是为了测试它是否指向有效的对象
- mutex::lock() 检查一次解锁状态是否已经被另一个线程锁定?
- “std::mutex”和“std::lock”是否保证处理器间代码中的内存同步
- 尝试std::lock[_unique]和std::shared_mutex的线程是否会被调用std::lock_sha
- "lock-free"的含义是否由C++标准定义?
- std::lock_guard<std::mutex> lock(m) 是否有简写?
- 是否有任何惯用的显式使用mutex::lock()或unlock()