- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
这个是我写的版本,请指教
////////////////公用变量/////////////////////////intrc=0; //上船红客计数
intbc=0; //上船黑客计数inti=-1; //数组下标,公用
Semaphoresail=newSempahore(0);//开船信号量Semaphoreempty=newSemaphore(4); //上船名额分配Semaphore[]go=newSemaphore[4]; //上船信号量Semaphoremutex=newmutex(1); //互斥量Semaphore[]land=newSemaphore[4];//登陆信号量Semaphores=newSemaphore(0); //不符合的等待信号量intt=0;//排在s的计数
/////////////////////////船//////////////////////////classBoatextendsPVableThread{publicrun()
{while(true)
{
p(sail);
for(intk=0;k4;k++)v(go[k]);System.out.println(BOATsailing);
for(intk=0;k4;k++)p(land[k]);System.out.println(BOATlanding);
System.out.println(BOATbacking);p(mutex);//re-init
i=-1;
rc=0;bc=0;
for(intk=0;kt;k++) v(s);t=0;
for(intk=0;k4;k++) v(empty);
v(mutex);
}
}
//////////////////////////红客/////////////////classRedextendsPVableThread
{
publicrun()
{
while(true)
{p(mutex);if((rc==0bc==3)││(rc==2bc==1))
{ t++;
v(mutex);
p(s);//releaseittillbacking
}
else
{v(mutex);
break;
}
}
p(empty);//nomore4enter,releaseafterbackingSystem.out.println(REDgetonboard);
p(mutex);rc++;i=i+1;
if(rc+bc==4)v(sail);v(mutex);
p(go);
System.out.println(REDsailing);
System.out.println(REDlanding);p(mutex);
rc--;
v(land);
v(mutex);
}
}
引用DreamPKU上的解法,个人认为如果YAPI的改一下则更好些对同步与互斥的分析:
同步关系:1.满员才能开船;2.红黑客满足一定的组合规则,才能有四人上船互斥关系:红黑客对请求上船的控制
显然,此题难点在对同步关系的解决。
下面给出所写程序的算法思想:
Red():每个红客到来请求上船时执行该程序;1.请求进入临界区;
首先检查本人的到来是否满足上船的组合(即4个红客或2个红客与2个黑客);
如果满足2个红客和2和黑客的组合,则看是否有船可上,有的话该红客上船并通知另外1个红客和2
个黑客上船,然后通知船满员,并退出临界区;
如果满足4个红客的组合,则看是否有船可上,有的话该红客上船并通知另外3个红客上船,然后通知船满员,并退出临界区;
不符合上船的组合,则先退出临界区,然后在信号量S_red上等待,直到当条件满足时,有人通知其上船。
完毕。
Black():每个黑客到来请求上船时执行该程序,其算法与Red()完全一致;Boat():河上的船执行该程序;
等待满员后开船过河;
空船返回,通知可以上船了,转而执行1。
您可能关注的文档
最近下载
- 【推荐】部编版五年级语文上册课内阅读.doc VIP
- GB_T 32151.8-2023 碳排放核算与报告要求 第8部分:水泥生产企业.pdf
- 部编版五年级上语文(部编版五年级上册)课内阅读训练.doc VIP
- 部编版五年级语文上册课内阅读及答案.doc VIP
- (部编版五年级上册)课内阅读训练.pdf VIP
- 2023-2024学年北京海淀区交大附中高一(上)期中物理试题及答案.docx VIP
- 2023-2024学年北京海淀区交大附中高一(上)期中生物试题及答案.docx VIP
- 2023-2024学年北京海淀区交大附中高一(上)期中数学试题及答案.pdf VIP
- 建构筑物四级消防员证中级题库.pdf
- 高铁施工组织设计(投标文件技术部分)范本.doc
文档评论(0)