metex实现读写锁的思考
已有
class Mutex{
void lock();
void ulock();
}
实现
class rwMutex{
void rlock();
void wlock();
void ulock();
}
以下为读者优先的,可能会导致写者饥饿
rc = 0;
Mutex RC;
bool rhold = false;
void rlock()
{
RC.lock();
rc+=1;
if(rc == 1){
mutex.lock();
rhold = true;
}
RC.ulock();
}
void wlock()
{
mutex.lock();
}
void ulock()
{
RC.lock();
if(rhold == true){
rc--;
if(rc == 0){
mutex.ulock();
rhold = false;
}
}
else{
mutex.ulock();
}
RC.ulock();
}