#ifndef LOCK_DEF
#define LOCK_DEF
/*******************************************************************************
* name : WORDDATA
* description: 本類主要用以加鎖和解鎖
* remark : Created by PanJing 2011-8-8 16:23:02 for #
*******************************************************************************/
class CLock
{
public:
CLock()
{
pthread_mutex_init(&m_mutex,NULL);
}
~CLock()
{
pthread_mutex_destroy(&m_mutex);
}
public:
void Lock()
{
pthread_mutex_lock(&m_mutex);
}
void UnLock()
{
pthread_mutex_unlock(&m_mutex);
}
private:
pthread_mutex_t m_mutex;
};
#endif
#ifndef WAIT_LOCK_DEF
#define WAIT_LOCK_DEF
/*******************************************************************************
* name : WORDDATA
* description: 本類主要用以加鎖和解鎖
* remark : Created by PanJing 2011-8-8 16:23:02 for #
*******************************************************************************/
class CWaitLock
{
public:
CWaitLock()
{
pthread_mutex_init(&m_mutex,NULL);
pthread_cond_init(&m_cond,NULL);
} ;
~CWaitLock()
{
pthread_mutex_destroy(&m_mutex);
};
public:
void Lock()
{
pthread_mutex_lock(&m_mutex);
};
void UnLock()
{
pthread_mutex_unlock(&m_mutex);
};
//等待 注意使用while 循環保證過濾假喚醒
void Wait()
{
pthread_cond_wait(&m_cond,&m_mutex);
};
//通知所有等待的線程
void Broadcast()
{
pthread_cond_broadcast(&m_cond);
};
private:
pthread_mutex_t m_mutex;
pthread_cond_t m_cond;
};
#endif