1、实验目的:
(1)、掌握基本的同步互斥算法,理解哲学家就餐模型。
(2)、了解 windows 2000/XP 中多线程的并发执行机制,线程间的同步和互斥。
(3)、学习使用 windows 2000/XP 中基本的同步对象,掌握相应的 API。
2、实验要求
有五个哲学家共用一张放有五把椅子的餐桌,每人坐在一把椅子上,桌子上
有五个碗和五只筷子,每人两边各放一只筷子。哲学家们是交替思考和进餐,饥
饿时便试图取其左右最靠近他的筷子。条件:(1)、只有拿到两只筷子时,哲学
家才能吃饭。(2)、如果筷子已被别人拿走,则必须等别人吃完之后才能拿到筷
子。(3)、任意一个哲学家在自己未拿到两只筷子吃饭前,不会放下手中拿到的
筷子。
3、实验环境
硬件:CPU :AMD QL64 内存:2GB 显卡:ATI 4570 硬盘:日立 250G
软件:Windows 2000/XP。开发工具:VC++6.0
4、实验内容
1)实现原理
1、利用记录型信号量解决哲学家进餐问题;
2、临界区互斥编程原理。
2)程序结构(流程图)
开始
定义信号量 tools[5]
定义哲学家类对象 P1-P5
哲学家的状态发生改变;
P1.change();P2.change();P3.chan
ge();P4.change();P5.change()
输出当前状态
停止程序
否
结束