【发布时间】:2011-12-10 15:45:29
【问题描述】:
我在互斥体析构函数中得到了标题错误。由于该错误可能是由于互斥体在销毁期间处于锁定状态,因此我创建了一个新的互斥体类,该类继承自 boost:mutex。这是为了确保在销毁过程中互斥锁是解锁的。但是,仍然会发生相同的错误。 任何点击将不胜感激!
class CMutes : public boost::mutex
{
public:
CMutes()
{
};
virtual ~CMutes()
{
if (m_bLock)
boost::mutex::unlock();
};
void lock()
{
if(!m_bLock)
boost::mutex::lock();
else
cout << "Mutex is in lock state\n";
};
void unlock()
{
if (m_bLock)
boost::mutex::unlock();
else
cout << "Mutex is in unlock state\n";
}
boost::mutex& getMutex()
{
return *this;
}
private:
bool m_bLock;
};
编辑: 是的,你是对的。我应该使用 RAII。但是,我有一种情况。我需要在另一个线程完成处理之前锁定资源。如下所示。
Thread A:
void getDate()
{
m_oLock.lock();
// access resource
}
void unlock()
{
m_oLock.unlock();
}
Thread B:
void Process()
{
threadA.getData();
threadA.unlock();
}
【问题讨论】: