1、题目题目: : 用多线程同步方 法解决用多线程同步方 法解决哲 学家就餐问 题哲 学家就餐问 题( (DiningDining- -Philosophers Philosophers Problem)Problem) 初始条件:初始条件: 1操作系统:Linux 2程序设计语言:C 语言 3共有 5 个哲学家需用餐。只许 4 个哲学家入席且桌上有 5 支筷子。 要求完成的主要任务要求完成的主要任务: : (包括课程设计工作量及其技术要求,以及说明书撰写等具 体要求) 1 1技术要求:技术要求: 1)为每个哲学家产生一个线程,设计正确的同步算法 2)每个哲学家取得一双筷子开始用餐后,即时显示“D
2、ining”和该哲 学家的自定义标识符以及餐桌上所有几位哲学家标识符及其所坐 的位置。 3)设定共有 5 个哲学家需用餐。每位用餐耗时 10 秒钟以上。 4)多个哲学家须共享操作函数代码。 2 2 设计说明书内容要求:设计说明书内容要求: 1)设计题目与要求 2)总的设计思想及系统平台、语言、工具等。 3)数据结构与模块说明(功能与流程图) 4)给出用户名、 源程序名、 目标程序名和源程序及其运行结果。(要 注明存储各个程序及其运行结果的 Linux主机 IP 地址和目录。 ) 5)运行结果与运行情况 (提示(提示: (1)连续存储区可用数组实现。 (2)编译命令可用: cc -lpthrea
3、d -o 目标文件名 源文件名 (3)多线程编程方法参见附件。 ) 3. 3. 调试报告:调试报告: 1) 调试记录 2) 自我评析和总结 上机时间安排:上机时间安排: 18 周一 五 08:0 12:00 指导教师签名:指导教师签名: 年年 月月 日日 系主任(或责任教师)签名:系主任(或责任教师)签名: 年年 月月 日日 1 用多线程同步方法解决哲学家就餐问题 (Dining-Philosophers Problem) 1设计题目与要求 1.1 设计题目描述: 用多线程同步方法解决哲学家就餐问题(Dining-Philosophers Problem) 1.2 要求: 1)为每个哲学家产生
4、一个线程,设计正确的同步算法 2)每个哲学家取得一双筷子开始用餐后,即时显示“Dining”和该哲学 家的自定义标识符以及餐桌上所有几位哲学家标识符及其所坐的位置。 3)设定共有 5 个哲学家需用餐。每位用餐耗时 10 秒钟以上。 4)多个哲学家须共享操作函数代码。 2总体设计思想及系统平台、语言、工具 2.1 总体设计思想 哲学家就餐问题,即共有 5 个哲学家绕一个圆桌做在 5 个位置上,他们每 2 个人中间有一只筷子,共 5 只筷子,只有当每个哲学家取得他左右两边的筷子 时,哲学家才能开始就餐,其它时间,哲学家只能思考或等待筷子。为避免哲 学家互相等待对方的筷子发生死锁,本次课程设计要求只许 4 个哲学家入席, 以 保证至少有一个哲学家能够进餐。 本课程设计将 room 作为信号量,将其初始化为 4,以保证只允许 4 个哲学家 同时入席就餐,这样就能保证至少有一个哲学家可以就餐。 针对每个哲学家,通 过共享操作函数代码,分别建立 5 个