分类:
2008-10-13 16:31:13
// 互斥对象能够确保线程拥有对单个资源的互斥访问权。
//////////////////////////////////////////////H////////////////////////////////////////////
#ifndef LGLIB_MUTEX_H
#define LGLIB_MUTEX_H
namespace lglib
{
class __LGLIB__ lg_Mutex
{
private: // 私有成员
HANDLE m_hMutex;
public: // 构造/析构
lg_Mutex();
virtual ~lg_Mutex();
public: // 方法
/*!
* 互斥锁,对互斥体进行上锁操作。
*/
void lock( void );
/*!
* 互斥解锁,对上锁的互斥体解锁。
*/
void unlock( void );
/*!
* 检测互斥体,用于判断当前互斥体的状态。
*
* @return true表明互斥体已经上锁,false互斥体没有上锁。
*/
bool tryLock( void );
};
}
#endif
///////////////////////////////////////CPP/////////////////////////////////////////////
namespace lglib
{
// 构造
lg_Mutex::lg_Mutex()
{
m_hMutex = CreateMutex( NULL, FALSE, NULL );
if ( m_hMutex == NULL )
{
throw( this );
}
}
// 析构
lg_Mutex::~lg_Mutex()
{
::CloseHandle( m_hMutex );
}
// 互斥锁
void lg_Mutex::lock( void )
{
WaitForSingleObject( m_hMutex, INFINITE );
}
// 互斥解锁
void lg_Mutex::unlock( void )
{
ReleaseMutex( m_hMutex );
}
// 检测互斥体
bool lg_Mutex::tryLock( void )
{
return ( WaitForSingleObject( m_hMutex, 0 ) == WAIT_OBJECT_0 );
}
}
posted on 2006-04-29 10:23 longest 阅读(546)