win32 读写锁
来源:互联网 发布:网络常见端口号 编辑:程序博客网 时间:2024/05/01 20:19
#define _RW_LOCK_h_
#include "stdint.h"
#include <wtypes.h>
#include <winbase.h>
#define RWLOCK_FREE 0
#define RWLOCK_LOCKED 1
class CRWLock
{
public:
inline CRWLock(void):m_ulRLock(0),m_ulWLock(0),m_ulPreLock(0){};
void WLock(void);
void RLock(void);
inline void WUnLock(void)
{
InterlockedExchange((LPLONG)&m_ulWLock, RWLOCK_FREE);
}
inline void RUnLock(void)
{
if (m_ulRLock>0)
{
InterlockedDecrement((LPLONG)&m_ulRLock);
}
}
inline void Lock(void){WLock();}
inline void UnLock(void){WUnLock();}
private:
uint32_t volatile m_ulWLock;
uint32_t volatile m_ulRLock;
uint32_t volatile m_ulPreLock;
};
#endif
#include "CRWLock.h"
void CRWLock::WLock(void)
{
while (InterlockedCompareExchange((PVOID*)&m_ulPreLock, (PVOID)RWLOCK_LOCKED, (PVOID)RWLOCK_FREE) != 0)
{
Sleep(0);
}
while (InterlockedCompareExchange((PVOID*)&m_ulRLock, (PVOID)RWLOCK_FREE, (PVOID)RWLOCK_FREE) != 0)
{
Sleep(0);
}
while (InterlockedCompareExchange((PVOID*)&m_ulWLock, (PVOID)RWLOCK_LOCKED, (PVOID)RWLOCK_FREE) != 0)
{
Sleep(0);
}
InterlockedExchange((LPLONG)&m_ulPreLock, RWLOCK_FREE);
}
void CRWLock::RLock(void)
{
while (InterlockedCompareExchange((PVOID*)&m_ulPreLock, (PVOID)RWLOCK_LOCKED, (PVOID)RWLOCK_FREE) != 0)
{
Sleep(0);
}
while (InterlockedCompareExchange((PVOID*)&m_ulWLock, (PVOID)RWLOCK_FREE, (PVOID)RWLOCK_FREE) != 0)
{
Sleep(0);
}
InterlockedIncrement((LPLONG)&m_ulRLock);
InterlockedExchange((LPLONG)&m_ulPreLock, RWLOCK_FREE);
}
- win32 读写锁
- Win32 实现读写锁
- C++在win32实现读写锁
- win32 读写 ini 文件
- WIN32 读写配置文件
- Win32经典代码:用关键段实现读写锁
- 在Win32下用C++实现多线程读写锁
- Win32 下用 C++ 实现多线程读写锁
- 在 Win32 下用 C++ 实现多线程读写锁
- 在Win32下用C++实现多线程读写锁
- 在 Win32 下用 C++ 实现多线程读写锁
- 在Win32下用C++实现多线程读写锁
- win32 application读写ini文件
- win32串口读写多线程同步
- win32基本文件读写操作
- Win32 ini配置文件的读写
- WIN32读写INI文件方法
- Win32串口异步读写函数
- 用Grails 开发了一点东西
- 统计汽车油耗
- Asp.net Ajax中sys未定义错误
- 暂时让CAS不用SSL了
- LR8.1卸载步骤
- win32 读写锁
- 081223 asp写2进制文件。
- Controller监控服务器时Windows Resources报错
- Portal技术原理
- Oracle索引分区杂谈
- win32 线程同步缓冲队列
- VB登录CRM系统(二)
- 每个人都需要掌握的18个人情世故
- 杂记