您的位置:首页 > 其它

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

2011-11-21 08:03 351 查看
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  semaphore signal