【发布时间】:2014-11-07 19:27:54
【问题描述】:
class AAA
{
...
~AAA()
{
pthread_mutex_lock( &m_mutex );
pthread_mutex_destroy( &m_mutex );
}
}
问题> 我在项目的某个地方看到了这段代码。这样做是个好习惯吗? 或者在销毁互斥体之前锁定互斥体是未定义的行为?
【问题讨论】:
-
如果你觉得有必要锁定它,它应该暗示另一个线程可以尝试请求它。当互斥锁被销毁时,该线程会发生什么?
-
@JanPetterJetmundsen,代码不是我写的,需要了解背后的原因。
-
未定义。 @JanPetterJetmundsen 是对的。在销毁互斥体之前锁定它不是一个好习惯,即使在大多数实现中它没有做错任何事情。
-
@Gabriel 如果其他问题的答案似乎与下面提供的答案完全相反,那它怎么可能是重复的?
-
@JanPetterJetmundsen 这段代码让我觉得太荒谬了,我(希望)是有原因的。我想知道实际编写代码的人在想什么——这种明显的错误需要努力。