版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
哲学家就餐问题实验报告班级:自动化1202指导教师:张健2014年11月22日一.实验题目经典的同步问题——哲学家就餐问题设计。二.实验内容1.实验要求有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子每个哲学家的行为是思考,感到饥饿,然后吃通心粉.为了吃通心粉,每个哲学家必须拿到两只筷子,并且每个人只能直接从自己的左边或右边去取筷子。2.程序流程图3.测试结果图6测试结果2图7测试结果34.结果分析和小结(1)程序分为四大模块,一步步解决了哲学家状态及状态改变的问题,筷子的“闲”、“用”问题;实现了哲学家等待、吃饭、思考三个过程的转换循环,并且避免了死锁问题;让临界资源得到了充分的利用。(2)这次实验让我学会分模块解决问题,怎样运用互斥锁对临界资源进行管理;此外自己在编程上及一些函数的认识仍存在较大的问题,以后应该多多实践,提高自己的反应速度,加强逻辑思维能力。三.程序源代码#include<windows.h>#include<string>#include<iostream>#include<assert.h>usingnamespacestd;booltools[5];//全局变量,用餐工具CRITICAL_SECTIONcs;//信号量,在线程中使用,临界区classPhilosopher。private:intnumber;intstatus;/*标记当前哲学家的状态,0表示正在等待(即处于饥饿状态),1表示得到两支筷子正在吃饭,2表示正在思考*/public:Philosopher(intnum=0):status(2),number(num){}constintfind。。returnnumber;}constintgetinfo。{returnstatus;}voidChange(;//状态改变函数voiddead_lock(;};/////////voidPhilosopher::dead_lock。。EnterCriticalSection(&cs);//进入临界区strings;if(status==1)。tools[number%5]=true;//tools[(number-1)%5]=true;status=2;}elseif(status==2)。status=0;//tools[(number-1)%5]=false;//tools[(number-1)%5]=true;}elseif(status==0)。tools[number%5]=false;tools[(number-1)%5]=false;status=1;}LeaveCriticalSection(&cs);//cout<<"*********";}/////////voidPhilosopher::Change。。EnterCriticalSection(&cs);//进入临界区if(status==1)//正在进餐。tools[number%5]=true;//放下左手工具tools[(number-1)%5]=true;//放下右手工具status=2;//改变状态为思考}elseif(status==2)//思考中。status=0;//改变状态为等待}elseif(status==0)//等待中。if(tools[number%5]&&tools[(number-1)%5])//左右手两边工具均为空闲状态。tools[number%5]=false;//拿起左手工具tools[(number-1)%5]=false;//拿起右手工具status=1;}}LeaveCriticalSection(&cs);}stringprint(Philosopher*pA)。//pA->Change(;inti=pA->getinfo(;stringstr;if(i==0)str="等待";elseif(i==1)str="就餐";elsestr="思考";returnstr;}stringtoolstatus(boola)。stringstate;if(a==true)state="闲";if(a==false)state="用";returnstate;}intmain。。charcon='y';//判断是否继续//con='n';for(inti=0;i<5;i++)tools[i]=true;//筷子都未使用,初始化PhilosopherP1(1),P2(2),P3(3),P4(4),P5(5);InitializeCriticalSection(&cs);//初始化初始化临界区cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (6)整式的乘法(B卷)-七年级数学冀教版暑假作业(含答案)
- 初中+物理变阻器课件+人教版物理九年级全一册物理
- 我国长期护理保险制度试点经验
- 《1 例超低出生体重儿左下肢静脉栓塞的个案护理》
- 英语四级选词填空的真题合集
- 人教A版2019高一数学必修1第一学期第二章2.1等式性质与不等式性质
- 高考英语词汇速记提分讲义
- 高等数学(第五版)课件 4.1 不定积分的概念与性质
- 教师个人的年终工作总结(3篇)
- 教育随笔初中数学教师7篇
- 考察提拔干部近三年个人工作总结材料
- 2024年开学第一课-奥运精神中国健儿主题班会课件
- 第一章 有理数 单元测试 2024-2025学年人教版七年级数学上册
- 牙齿矫正协议书范本(2024版)
- 实验室信息管理系统LIMS工程项目系统招标文件包含URS
- 五年级小数乘法竖式计算练习500道及答案
- 2024中国移动(成都)产业研究院社会招聘(高频重点提升专题训练)共500题附带答案详解
- 中国子宫内膜增生管理指南(2022)解读
- 2024年交管12123学法减分考试试题库及答案
- 家政服务员职业技能竞赛题库含答案(1-200判断题)
- (高清版)JTG D50-2017 公路沥青路面设计规范
评论
0/150
提交评论