考研复习(10)-读者写者问题

int readerCount =0
//记录当前读者数量
semaphore mutex=1;
//互斥地访问文件
semaphore rmutex=1;
//互斥地访问readerCounter;
writer()
{
while(1)
{
wait(mutex);
writing;
signal(mutex);
}
}
reader()
{
while(1)
{
wait(rmutex);
//先申请读写readerCount的权限
if(readerCount==0) wait mutex;
//如果当前没有读者在读文件,可能有写者在写文件,申请读写权限
count++;
signal (rmutex);
reading;
wait(rmutex);
count--;
if(count==0) signal(mutex);
//当前没有读者,释放读写权限
signal(rmutex);

}
}

你可能感兴趣的:(考研复习(10)-读者写者问题)