如何删除静态互斥对象

时间:2014-02-20 09:49:12

标签: c++ static mutex

我有一个定义为静态的互斥锁,并由两个线程使用以访问某些功能。由于它是静态的,我应该在最终确定阶段删除?如果我在每个派生类对象调用的基类析构函数中编写以下内容,那没关系。

pthread_mutex_destroy(&m_mutex);

1 个答案:

答案 0 :(得分:0)

你可以在适当的时候为你创建一个帮助器结构来销毁它。

static pthread_mutex_t mutex;

struct MutexDestroyer {
  ~MutexDestroyer() {
    pthread_mutex_destroy(&mutex);
  }
};

static MutexDestroyer mutexDestroyer;

mutexDestroyer被销毁时,它的析构函数会为你破坏互斥锁。

稍后你可以改进它以成为一个完整的RAII结构,将互斥变量移动到它并在构造函数中初始化它,然后创建帮助函数来锁定和解锁互斥锁。