ResLock.h
#ifndef _RESLOCK_H_
#define _RESLOCK_H_
#ifdef _MSC_VER
#include <windows.h>
#else
#include <pthread.h>
#endif
/**
* @class ResLock
*
* @brief lock for reading/writing shared resource in multi-threads
*
* @version V1.0 2021-08-23
*
* @author zhangb
*
* @copyright (C) 2010 EETRUST Technology Co., Ltd.
*
*/
class ResLock
{
public:
//创建锁
ResLock();
//销毁锁
~ResLock();
//锁定
void lock();
//解锁
void unlock();
//private:
#ifdef _MSC_VER
CRITICAL_SECTION m_cs;
#else
pthread_mutex_t m_cs;
pthread_cond_t m_pthreadCond;
#endif
};
#endif
ResLock.cpp
#include "ResLock.h"
ResLock::ResLock()
{
#ifdef _MSC_VER
InitializeCriticalSection(&m_cs);
#else
pthread_mutex_init(&m_cs, NULL);
m_pthreadCond = PTHREAD_COND_INITIALIZER;
#endif
}
ResLock::~ResLock()
{
#ifdef _MSC_VER
DeleteCriticalSection(&m_cs);
#else
pthread_mutex_destroy(&m_cs);
pthread_cond_destroy(&m_pthreadCond);
#endif
}
void ResLock::lock()
{
#ifdef _MSC_VER
EnterCriticalSection(&m_cs);
#else
pthread_mutex_lock(&m_cs);
#endif
}
void ResLock::unlock()
{
#ifdef _MSC_VER
LeaveCriticalSection(&m_cs);
#else
pthread_mutex_unlock(&m_cs);
#endif
}