请教一道关于操作系统中读者-写者的问题(p,v操作)
这是一道一般难度的p,v操作问题,但我觉得答案有点问题,现在请教一下高手帮忙看看。 题目:某数据库一个写进程,多个读进程,它们之间读写操作的互斥要求为:写时不能读,也不能允许其它写进程写;读进程之间不互斥,请用p,v操作描述这一组进程工作过程。
答案:
int rmutex=1;
int wmutex=1;
int count=0;
main()
{
cobegin
reader();
writer();
coend;
}
reader()
{
while(1)
{
p(rmutex);
if(count==0) p(wmutex);/*当第一个读进程读数据库时,阻止写进程写*/
count ++;
v(rmutex);
读数据库;
p(rmutex);
count--;
if(count==0) v(wmutex);*当最后一个读进程读完数据库时,允许写进程写*/
v(rmutex);
}
}
writer()
{
while(1)
{
p(wmutex);
写数据库;
v(wmutex);
}
}
我感觉writer()有点毛病,写时是否还能读呢? 麻烦各位高人费心看看。
[此贴子已经被作者于2006-11-17 12:54:21编辑过]