我有一个定义为静态的互斥锁,并由两个线程使用以访问某些功能。由于它是静态的,我应该在最终确定阶段删除?如果我在每个派生类对象调用的基类析构函数中编写以下内容,那没关系。
pthread_mutex_destroy(&m_mutex);
答案 0 :(得分:0)
你可以在适当的时候为你创建一个帮助器结构来销毁它。
static pthread_mutex_t mutex;
struct MutexDestroyer {
~MutexDestroyer() {
pthread_mutex_destroy(&mutex);
}
};
static MutexDestroyer mutexDestroyer;
当mutexDestroyer
被销毁时,它的析构函数会为你破坏互斥锁。
稍后你可以改进它以成为一个完整的RAII结构,将互斥变量移动到它并在构造函数中初始化它,然后创建帮助函数来锁定和解锁互斥锁。