class MutexImpl : boost::noncopyable
{
public:
boost::mutex m_boost_mutex;
};
class RXCORE_API Mutex : boost::noncopyable
{
public:
Mutex::Mutex() : m_impl(new MutexImpl)
{
}
Mutex::~Mutex()
{
delete m_impl;
}
void Mutex::lock()
{
m_impl->m_boost_mutex.lock();
}
void Mutex::unlock()
{
m_impl->m_boost_mutex.unlock();
}
private:
MutexImpl* m_impl;
};
class MutexLocker : boost::noncopyable
{
public:
/*!
\brief 互斥锁,直接使用mutex来创建
\param mutex 传入的互斥锁
*/
explicit MutexLocker(Mutex& mutex)<span style="font-size:14px;">
</span>
: m_mutex(mutex)
{
m_mutex.lock();
}
~MutexLocker()
{
m_mutex.unlock();
}
private:
Mutex& m_mutex;
};
int main()
{
Mutex m_mutex;
//互斥访问区间
{
MutexLocker mutexLocker(m_mutex);
/*....code....*/
}
return 0;
}
C++类管理锁资源
最新推荐文章于 2024-07-05 17:09:46 发布