c++ - 未初始化的互斥锁超出范围——清理?

标签 c++ multithreading initialization pthreads mutex

我正在尝试清理别人的代码,我看到很多情况下类包含 pthread_mutex_t 成员变量。在许多情况下,pthread_mutex_init() 永远不会被调用,锁定/解锁也不会。当该对象超出范围时,需要做些什么来正确清理它?我可以尝试解锁它吗(如果它还没有被初始化,会发生什么)?我需要摧毁它吗?

分析工具提示资源可能丢失。有没有东西丢了?

最佳答案

如果您在进行清理时发现一个从未使用过的互斥量,您应该考虑将其删除。

如果使用互斥锁,你应该调用pthread_mutex_destroy() .类析构函数是一个很好的地方,特别是如果 pthread_mutex_init()在构造函数中调用。

请注意,互斥量必须在销毁时解锁,否则将导致未定义的行为。然而,这应该通过使用互斥锁的方式来确保。

关于c++ - 未初始化的互斥锁超出范围——清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9010481/

相关文章:

vba - Excel VBA - 初始化空用户类型和检测空值

c - 为什么 const 变量不需要在 C 中初始化?

c++ - 临时对象不表现为 const

c++ - 使用 OpenCV 的最大熵阈值

java - 如何在 Java 和 logback 中将 MDC 与 parallelStream 一起使用

multithreading - 我如何在执行线程内使用Dictionary/StringList-Delphi

java - ScheduledExecutorService 只循环一次

c++ - 有没有办法 Boost.Assign 一个 ptr_vector?

c++ - 具有指针 C 成员的类 C 的析构函数

c++ - 如何在远程类之间共享数据?