1 Star 0 Fork 5

大王叫我来巡山/call_demo_server

forked from 张远浩/call_demo_server 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Lock.cpp 1.99 KB
一键复制 编辑 原始数据 按行查看 历史
zhangyuanhao 提交于 2015-08-15 22:38 . [MOD] 修改实现
/*================================================================
* Copyright (C) 2014 All rights reserved.
*
* 文件名称:Lock.cpp
* 创 建 者:Zhang Yuanhao
* 邮 箱:bluefoxah@gmail.com
* 创建日期:2014年09月10日
* 描 述:
*
#include "Lock.h"
================================================================*/
#include "Lock.h"
CLock::CLock()
{
#ifdef _WIN32
InitializeCriticalSection(&m_critical_section);
#else
pthread_mutex_init(&m_lock,NULL);
#endif
}
CLock::~CLock()
{
#ifdef _WIN32
DeleteCriticalSection(&m_critical_section);
#else
pthread_mutex_destroy(&m_lock);
#endif
}
void CLock::lock()
{
#ifdef _WIN32
EnterCriticalSection(&m_critical_section);
#else
pthread_mutex_lock(&m_lock);
#endif
}
void CLock::unlock()
{
#ifdef _WIN32
LeaveCriticalSection(&m_critical_section);
#else
pthread_mutex_unlock(&m_lock);
#endif
}
#ifndef _WIN32
bool CLock::try_lock()
{
return pthread_mutex_trylock(&m_lock) == 0;
}
#endif
#ifndef _WIN32
CRWLock::CRWLock()
{
pthread_rwlock_init(&m_lock, NULL);
}
CRWLock::~CRWLock()
{
pthread_rwlock_destroy(&m_lock);
}
void CRWLock::rlock()
{
pthread_rwlock_rdlock(&m_lock);
}
void CRWLock::wlock()
{
pthread_rwlock_wrlock(&m_lock);
}
void CRWLock::unlock()
{
pthread_rwlock_unlock(&m_lock);
}
bool CRWLock::try_rlock()
{
return pthread_rwlock_tryrdlock(&m_lock) == 0;
}
bool CRWLock::try_wlock()
{
return pthread_rwlock_trywrlock(&m_lock) == 0;
}
CAutoRWLock::CAutoRWLock(CRWLock* pLock, bool bRLock)
{
m_pLock = pLock;
if(NULL != m_pLock)
{
if (bRLock) {
m_pLock->rlock();
}
else
{
m_pLock->wlock();
}
}
}
CAutoRWLock::~CAutoRWLock()
{
if(NULL != m_pLock)
{
m_pLock->unlock();
}
}
#endif
CAutoLock::CAutoLock(CLock* pLock)
{
m_pLock = pLock;
if(NULL != m_pLock)
m_pLock->lock();
}
CAutoLock::~CAutoLock()
{
if(NULL != m_pLock)
m_pLock->unlock();
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xxd/call_demo_server.git
git@gitee.com:xxd/call_demo_server.git
xxd
call_demo_server
call_demo_server
master

搜索帮助