我写了一个包装互斥锁的类。在析构函数中,我调用pthread_mutex_destroy,有时它返回EBUSY,因为其他一些线程还没有释放它。我的问题是,处理互斥锁销毁的最佳方法是什么?我应该等待它免费吗?
这是我到目前为止所做的,这可能不是最佳解决方案:
Mutex::~Mutex()
{
int rc = pthread_mutex_destroy( &_mutex );
while ( rc == EBUSY )
{
lock(); // Call to pthread_mutex_lock
unlock(); // Call to pthread_mutex_unlock
// Attempt destroy again
rc = pthread_mutex_destroy( &_mutex );
}
}
答案 0 :(得分:2)
我的问题是,处理互斥锁销毁的最佳方法是什么?我应该等待它免费吗?
在使用资源时不应该破坏资源,因为这通常会导致未定义的行为。
正确的行动方针是: