#include "StdAfx.h"
#include "MySRWLockManage.h"
CMySRWLockManage::CMySRWLockManage(void)
{
m_pfnMyInitializeSRWLockFunc = NULL;
m_pfnMyAcquireSRWLockExclusiveFunc = NULL;
m_pfnMyReleaseSRWLockExclusiveFunc = NULL;
m_pfnMyAcquireSRWLockSharedFunc = NULL;
m_pfnMyReleaseSRWLockSharedFunc = NULL;
}
CMySRWLockManage::~CMySRWLockManage(void)
{
}
BOOL CMySRWLockManage::InitSRWStation()
{
BOOL bResult = FALSE;
m_pfnMyInitializeSRWLockFunc = (MyInitializeSRWLockFunc)MyGetProcAddress(L"kernel32.dll", "InitializeSRWLock");
m_pfnMyAcquireSRWLockExclusiveFunc = (MyAcquireSRWLockExclusiveFunc)MyGetProcAddress(L"kernel32.dll", "AcquireSRWLockExclusive");
m_pfnMyReleaseSRWLockExclusiveFunc = (MyReleaseSRWLockExclusiveFunc)MyGetProcAddress(L"kernel32.dll", "ReleaseSRWLockExclusive");
m_pfnMyAcquireSRWLockSharedFunc = (MyAcquireSRWLockSharedFunc)GetProcAddress(GetModuleHandle(L"kernel32.dll"), "AcquireSRWLockShared");
m_pfnMyReleaseSRWLockSharedFunc = (MyReleaseSRWLockSharedFunc)MyGetProcAddress(L"kernel32.dll", "ReleaseSRWLockShared");
if(m_pfnMyInitializeSRWLockFunc == NULL
|| m_pfnMyAcquireSRWLockExclusiveFunc == NULL
|| m_pfnMyReleaseSRWLockExclusiveFunc == NULL
|| m_pfnMyAcquireSRWLockSharedFunc == NULL
|| m_pfnMyReleaseSRWLockSharedFunc == NULL)
goto out;
m_pfnMyInitializeSRWLockFunc(&m_pSRWLock);
bResult = TRUE;
out:
return bResult;
}
void CMySRWLockManage::MyAcquireSRWLockExclusive()
{
if(m_pfnMyAcquireSRWLockExclusiveFunc)
m_pfnMyAcquireSRWLockExclusiveFunc(&m_pSRWLock);
return ;
}
void CMySRWLockManage::MyReleaseSRWLockExclusive()
{
if(m_pfnMyReleaseSRWLockExclusiveFunc)
m_pfnMyReleaseSRWLockExclusiveFunc(&m_pSRWLock);
return ;
}
void CMySRWLockManage::MyAcquireSRWLockShared()
{
if(m_pfnMyAcquireSRWLockSharedFunc)
m_pfnMyAcquireSRWLockSharedFunc(&m_pSRWLock);
return ;
}
void CMySRWLockManage::MyReleaseSRWLockShared()
{
if(m_pfnMyReleaseSRWLockSharedFunc)
m_pfnMyReleaseSRWLockSharedFunc(&m_pSRWLock);
return ;
}
FORCEINLINE PVOID CMySRWLockManage::MyGetProcAddress(
__in PTSTR LibraryName,
__in PSTR ProcName
)
{
return GetProcAddress(GetModuleHandle(LibraryName), ProcName);
}
读-写共享独占锁源码实现-C++实现
1星 需积分: 18 86 浏览量
2017-09-08
18:33:37
上传
评论
收藏 1KB RAR 举报
candytian
- 粉丝: 1
- 资源: 11
最新资源
- 课程设计-python爬虫-爬取日报,爬取日报文章后存储到本地,附带源代码+课程设计报告
- 软件和信息技术服务行业投资与前景预测.pptx
- 课程设计-基于SpringBoot + Mybatis+python爬虫NBA球员数据爬取可视化+源代码+文档+sql+效果图
- 软件品质管理系列二项目策划规范.doc
- 基于TensorFlow+PyQt+GUI的酒店评论情感分析,支持分析本地数据文件和网络爬取数据分析+源代码+文档说明+安装教程
- 软件定义无线电中的模拟电路测试技术.pptx
- 软件开发协议(作为技术开发合同附件).doc
- 软件开发和咨询行业技术趋势分析.pptx
- 软件测试题详解及答案.doc
- 软件漏洞生命周期管理策略.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈