读者优先(当一个读者申请读操作已经有一个读者在进行读操作时可以直接进行读操作)
int Rcount=0;//记录是否为第一个读者
semaphore RcountMutex = 1;//互斥修改Rcount//对读者操作加锁(因为允许多个读者同时阅读,所以为了保证Rcount的正确性必须加锁)
semaphore Read_Write_Mutex = 1;//读-写操作加锁
void writer(){
while(true){
sem_wait(&Read_Write_Mutex);//sem_wait是一个函数,它的作用是从信号量的值减去一个“1”,但它永远会先等待该信号量为一个非零值才开始做减法
//To do write();
sem_post(&Read_Write_Mutex);//+1解锁使sem_wait可以继续执行
}
}
void reader(){
while(true){