我正在尝试清理别人的代码,我看到很多情况下类包含 pthread_mutex_t
成员变量。在许多情况下,pthread_mutex_init()
永远不会被调用,锁定/解锁也不会。当该对象超出范围时,需要做些什么来正确清理它?我可以尝试解锁它吗(如果它还没有被初始化,会发生什么)?我需要摧毁它吗?
分析工具提示资源可能丢失。有没有东西丢了?
最佳答案
如果您在进行清理时发现一个从未使用过的互斥量,您应该考虑将其删除。
如果使用互斥锁,你应该调用pthread_mutex_destroy()
.类析构函数是一个很好的地方,特别是如果 pthread_mutex_init()
在构造函数中调用。
请注意,互斥量必须在销毁时解锁,否则将导致未定义的行为。然而,这应该通过使用互斥锁的方式来确保。
关于c++ - 未初始化的互斥锁超出范围——清理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9010481/