|
以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (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=57360) |
|
-- 作者:shun -- 发布时间:12/30/2007 10:40:00 AM -- 面包师问题和巴拿马问题(PV) 以下的代码都是Runningwulf提供的答案 面包师问题 Void Client (){ 巴拿马运河问题 Pacific(){ Pacific(){ |
|
-- 作者:buddha -- 发布时间:1/1/2008 12:35:00 PM -- 面包师问题不一定正确. 巴拿马运河不必那么麻烦.可以看做两个读者优先的读者. 不可尽信... :) |
|
-- 作者:cpkug -- 发布时间:1/1/2008 6:57:00 PM -- 巴拿马运河问题: 1. 觉得只需要下面变量中的一行就够了,不需要两行; int PshipSum=0,AshipSum=0; int PshipCur=0,AshipCur=0; 2. 觉得判断己方船只过河总数大于T时则后续船只应该等待的操作应该在判断是否允许通过闸门之后,不然会出现死锁; 3. 觉得大西洋,太平洋初次对闸门的使用应该进行互斥,不然会出现死锁,拟增加互斥变量gate; 以下是本人修改后的算法,有不足请指教: 信息量: mutex1,mutex2:=1 ——互斥信息量 程序: //在太平洋过闸门 |
|
-- 作者:xianyun -- 发布时间:1/8/2008 12:34:00 AM -- 关于巴拿马运河问题和银行问题 05 年助教给了一个答案,这个答案将问题考虑得令人惊讶 ![]() 答案如下: 巴拿马运河建在太平洋和大西洋之间。由于太平洋和大西洋水面高度不同,有巨大落差,所以运河中修建有T(T>=2)级船闸,并且只能允许单向通行。船闸依次编号为1,2,……,T。由大西洋来的船需经由船闸T,T-1,……,2,1通过运河到太平洋;由太平洋来的船需经由船闸1,2,……,T-1,T通过运河到大西洋。 试用P,V操作正确解决大西洋和太平洋的船只通航问题。 答:来自不同方向的船只对船闸要互斥使用。但如过有同方向的船只正在通行,则不用等待。 对一个船闸设以下变量: PtoAcnt 整型,记录此船闸正由太平洋往大西洋航行的船只 初值0。 AtoPcnt 整型,记录此船闸正由大西洋往太平洋航行的船只 初值0。 MutexA 信号量,对PtoAcount互斥 初值1 MutexB 信号量,对AtoPcount互斥 初值1 Lock 信号量 初值1 太平洋到大西洋的船: P(mutexA); PtoAcnt =PtoAcnt+1; if PtoAcnt = = 1 then P(Lock); V(mutexA); 过 P(mutexA) PtoAcnt=PtoAcnt-1; if PtoAcnt = = 0; then V(Lock); V(mutexA); 大西洋到太平洋的船: Customer_i Clerk_i |
|
-- 作者:sun120409 -- 发布时间:3/19/2008 7:51:00 PM -- 非常感谢 ,正找这个呢,感谢LZ辛勤劳动 |
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
78.125ms |