📄 rwlock.h
字号:
/////////////////////////////////////////////////////////////////////////////
//
//
// 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -