rwlock.h
来自「这是书上的代码」· C头文件 代码 · 共 66 行
H
66 行
/////////////////////////////////////////////////////////////////////////////
//
//
// Copyright Declaration
//
// This source code is written by Huang Yifeng(China).
// You can use the source code, but please reserve the Copyright
// Declaration in this code. Or you should be ready to be punished
// by the related law.
//
// Huang Yifeng
// edward_hyf@sohu.com
// 2003.7.8
//////////////////////////////////////////////////////////////////////////////
#ifndef __READER_WRITER_LOCK__
#define __READER_WRITER_LOCK__
#include "definition.h"
class CRWLock
{
public:
CRWLock()
{
DataSemaphore.Create(1,200);
ReaderCounter = 0;
}
~CRWLock()
{
}
void ReaderAcquire()
{
ReaderMutex.Lock();
ReaderCounter++;
if(ReaderCounter==1)
DataSemaphore.Acquire();
ReaderMutex.Unlock();
}
void ReaderRelease()
{
ReaderMutex.Lock();
ReaderCounter--;
if(ReaderCounter==0)
DataSemaphore.Release();
ReaderMutex.Unlock();
}
void WriterAcquire()
{
DataSemaphore.Acquire();
}
void WriterRelease()
{
DataSemaphore.Release();
}
private:
CSemaphoreEx DataSemaphore;
CMutexEx ReaderMutex;
int ReaderCounter;
};
#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?