int numOfReaders = 0;
int numOfWriters = 0;
int numOfWaitingWriters = 0;
Lock aLock;
void read(...){
bool hasNotRead = true;
while(hasNotRead){
aLock.lock();
if(numOfWriters==0 && numOfWaitingWriters==0){
numOfReaders++;
hasNotRead = flase;
}
aLock.unlock();
}
............//open file and read
aLock.lock();
numOfReaders--;
aLock.unlock();
}
void write(...){
aLock.lock();
numOfWaitingWriters++;
aLock.unlock();
bool hasNotWrite = true;
while(hasNotWrite){
aLock.lock();
if(numOfWriters==0 && numOfReaders==0){
numOfWriters++;
hasNotWrite = false;
}
aLock.unlock();
}
.........//write to the file
aLock.lock();
numOfWriters--;
numOfWaitingWriters--;
aLock.unLock();
}