我正在尝试清理其他人的代码,我发现很多情况下类包含pthread_mutex_t
成员变量。在许多情况下,永远不会调用pthread_mutex_init()
,也不会锁定/解锁。当该对象超出范围时,需要做什么(如果有的话)以便在它之后进行适当的清理?我可以尝试解锁它(如果它还没有初始化,会发生什么)?我需要销毁它吗?
分析工具说资源可能会丢失。什么都丢失了?
答案 0 :(得分:1)
如果你正在进行清理并找到一个从未使用过的互斥锁,你应该考虑删除它。
如果使用互斥锁,则应拨打pthread_mutex_destroy()
。类析构函数是一个很好的做法,尤其是在构造函数中调用pthread_mutex_init()
时。
请注意,互斥锁必须在销毁时解锁,否则将导致未定义的行为。但是,这应该通过使用互斥锁的方式来确保。