全球旧事资料 分类

um表示哲学家编号fi
dco
st方法:返回该哲学家编号geti
foco
st方法:返回哲学家当前状态Cha
ge方法:根据题目要求改变哲学家的状态(等待进餐思考等待)另外,程序中包含一个公有对象,bool类型数组tools6,用来保存6把餐当前状态:true表示该餐具当前空闲,false表示该餐具当前正被使用。程序中还包含两个公有函数:pri
t和toolstatus。Pri
t用来返回一个哲学家的状态,
3
ftoolstatus用来返回一个餐具的状态。32程序各模块流程图321主程序模块
图32主程序模块流程
322状态改变模块
4
f图33状态改变模块Cha
ge流程图
5
f323返回哲学家状态模块
图34返回哲学家状态模块pri
t流程图324返回餐具状态模块
6
f图35返回餐具状态模块toolstatusboola流程图
4.源程序代码
实验目的:通过实现哲学家进餐问题的同步深入了解和掌握进程同步和互斥的原理。设计要求:哲学家有N个,也定全体到达后开始讨论:在讨论的间隙哲学家进餐,每人进餐时都需使用刀、叉各一把,所有哲学家刀和叉都拿到后才能进餐。哲学家的人数、餐桌上的布置自行设定,实现刀和叉的互斥使用算法的程序实现。
i
cludewi
dowshi
cludetimehi
cludestri
gi
cludeiostreami
cludeasserth
7
fusi
g
amespacestdbooltools6全局变量,用餐工具
CRITICAL_SECTIONcs信号量在线程中使用,临界区classPhilosopherprivatei
t
umberi
tstatus标记当前哲学家的状态0表示正在等待即处于饥饿状态1
表示得到两支筷子正在吃饭2表示正在思考publicPhilosopheri
t
um0status2
umber
umi
tfi
dco
stretur
umberi
tgeti
foco
stretur
statusvoidCha
gevoidPhilosopherCha
geE
terCriticalSectio
cs进入临界区ifstatus1正在进餐tools
umber6true放下左手工具放下右手工具状态改变函数
tools
umber16truestatus2elseifstatus2思考中status0elseifstatus0等待中改变状态为等待
改变状态为思考
8
fiftools
umber6tools
umber16态tools
umber6false拿起左手工具tools
umber16falsestatus1拿起右手工具左右手两边工具均为空闲状
LeaveCriticalSectio
csstri
gpri
tPhilosopherpApACha
gei
tipAgeti
fostri
gstrifi0str
好听全球资料 返回顶部