本来是N年前自己写着玩的一个东西,近来打算在产品中使用,所以借助大家的力量帮忙测试下,欢迎拍砖、喷饭。
代码:
typedef struct _LAST_ACQUIRE_TYPE
{
BOOLEAN bIsAcquireRead;
struct _LAST_ACQUIRE_TYPE *pPre;
}LAST_ACQUIRE_TYPE,*PLAST_ACQUIRE_TYPE;
typedef struct _RW_LOCK
{
INT iNowReaderCount; //读者计数
PLAST_ACQUIRE_TYPE pLastAcquireType;
ULONG ulTlsForWriteIndex;
ULONG ulTlsForReadIndex;
CRITICAL_SECTION ExclusiveLock; //写锁
HANDLE hShareLock; //读锁
CRITICAL_SECTION ShareReaderCountLock; //读者计数访问互斥锁
LONG volatile lNowIsRelease;
}RW_LOCK,*PRW_LOCK;