以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 计算机考研交流 』   (http://bbs.xml.org.cn/list.asp?boardid=67)
----  请教一个PV问题,大家看看这个算法是否正确  (http://bbs.xml.org.cn/dispbbs.asp?boardid=67&rootid=&id=56207)


--  作者:skidrow013
--  发布时间:11/30/2007 12:14:00 AM

--  请教一个PV问题,大家看看这个算法是否正确
大家帮忙看一下这个算法存在什么问题
先谢了。

有一个仓库存放两种零件A和B,最大库存容量各为m个,一车间不断取A和B进行装配,每次各取一个。
为避免零件锈蚀,遵循先入库者先出库的原则。有两组供应商,不断地供应A和B(每次一个),为
保证齐全和合理库存,当某种零件数量比另一种数量超过n(n<m)时,暂停对数量大的零件的进货,集中
补充数量小的零件。试用P、V操作正确实现。

我是用类C语言来描述的。
fullA,emptyA,
fullB,emptyB,
mutexA,mutexB,
PQA(表示当前允许供应A的数量)
PQB(表示当前允许供应B的数量)

初始化
fullA=0;
emptyA=m;
fullB=0;
emptyB=m;
mutexA=1;mutexB=1;
PQA=PQB=n;

A供货商

do
{
   wait(emptyA);

   wait(PQA);

   wait(mutexA);

   for(int i=fullA,fullA!=0&&i>=0,i--)
   
   /*用数组Astore[m]来模拟仓库储存A零件的存储单元集合*/
   Astore[i]=Astore[i+1];

   add an "A" product to Astore[0];
   signal(mutexA);

   signal(fullA);

   signal(PQB);
}

B供货商

do
{
   wait(emptyB);

   wait(PQB);

   wait(mutexB);

   for(int i=fullA,fullA!=0&&i>=0,i--)
   
   /*用数组Astore[m]来模拟仓库储存A零件的存储单元集合*/
   Astore[i]=Astore[i+1];

   add a "B" product to Astore[0];
   signal(mutexB);

   signal(fullB);

   signal(PQA);
}

装配车间

do
{
   wait(fullA);

   wait(fullB);

   wait(mutexA);

   wait(mutexB);

   Take an "A" product from Astore[fullA];
    
   Take an "B" product from Bstore[fullB];

   signal(mutexA);
   
   signal(mutexB);

   signal (emptyA);

   signal (emptyB)

}


--  作者:九九
--  发布时间:11/30/2007 11:04:00 AM

--  
for(int i=fullA,fullA!=0&&i>=0,i--)
   /*用数组Astore[m]来模拟仓库储存A零件的存储单元集合*/
   Astore[i]=Astore[i+1];

这部分的循环,好像没有多大意义的浪费了操作,
建议用别的办法,来实现先进先出


--  作者:javacap
--  发布时间:11/30/2007 12:28:00 PM

--  
你这是P,V还是管程阿,怎么全是条件变量
--  作者:skidrow013
--  发布时间:11/30/2007 5:28:00 PM

--  
要求是pV所以,我尽力用PV。
但不知是否会出问题
--  作者:skidrow013
--  发布时间:11/30/2007 5:29:00 PM

--  
以下是引用javacap在2007-11-30 12:28:00的发言:
你这是P,V还是管程阿,怎么全是条件变量

要求是用PV操作。
不知道PV操作有什么具体的要求?


--  作者:buddha
--  发布时间:12/3/2007 12:58:00 PM

--  
这就是PV吧.
只不过没有用PASCAL而已
--  作者:applestar
--  发布时间:12/4/2007 7:12:00 PM

--  
信号量只有pv才能访问操作。
这题很简单的。不需要这么复杂。信号量的设置的是对的。过程不妥
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.012ms